author | Volker Birk <vb@pep-project.org> |
Sun, 31 May 2015 19:31:19 +0200 | |
changeset 39 | 6fc5cc7a167c |
parent 0 | 0aa9866d751c |
child 269 | 26c8597fe860 |
permissions | -rw-r--r-- |
vb@0 | 1 |
#pragma once |
vb@0 | 2 |
|
vb@0 | 3 |
#include <list> |
vb@0 | 4 |
#include <mutex> |
vb@0 | 5 |
|
vb@0 | 6 |
namespace utility |
vb@0 | 7 |
{ |
vb@0 | 8 |
using namespace std; |
vb@0 | 9 |
|
vb@0 | 10 |
template<class T> class locked_queue |
vb@0 | 11 |
{ |
vb@0 | 12 |
mutex _mtx; |
vb@0 | 13 |
list<T> _q; |
vb@0 | 14 |
|
vb@0 | 15 |
public: |
vb@0 | 16 |
T& back() |
vb@0 | 17 |
{ |
vb@0 | 18 |
lock_guard<mutex> lg(_mtx); |
vb@0 | 19 |
return _q.back(); |
vb@0 | 20 |
} |
vb@0 | 21 |
T& front() |
vb@0 | 22 |
{ |
vb@0 | 23 |
lock_guard<mutex> lg(_mtx); |
vb@0 | 24 |
return _q.front(); |
vb@0 | 25 |
} |
vb@0 | 26 |
void pop_back() |
vb@0 | 27 |
{ |
vb@0 | 28 |
lock_guard<mutex> lg(_mtx); |
vb@0 | 29 |
_q.pop_back(); |
vb@0 | 30 |
} |
vb@0 | 31 |
void pop_front() |
vb@0 | 32 |
{ |
vb@0 | 33 |
lock_guard<mutex> lg(_mtx); |
vb@0 | 34 |
_q.pop_front(); |
vb@0 | 35 |
} |
vb@0 | 36 |
void push_back(const T& data) |
vb@0 | 37 |
{ |
vb@0 | 38 |
lock_guard<mutex> lg(_mtx); |
vb@0 | 39 |
_q.push_back(data); |
vb@0 | 40 |
} |
vb@0 | 41 |
void push_front(const T& data) |
vb@0 | 42 |
{ |
vb@0 | 43 |
lock_guard<mutex> lg(_mtx); |
vb@0 | 44 |
_q.push_front(data); |
vb@0 | 45 |
} |
vb@0 | 46 |
size_t size() |
vb@0 | 47 |
{ |
vb@0 | 48 |
lock_guard<mutex> lg(_mtx); |
vb@0 | 49 |
return _q.size(); |
vb@0 | 50 |
} |
vb@0 | 51 |
}; |
vb@0 | 52 |
}; |