locked_queue.hh
author Dean
Tue, 04 Oct 2016 12:31:52 +0200
branchkeysync
changeset 174 1fa1296363f9
parent 0 0aa9866d751c
child 269 26c8597fe860
permissions -rw-r--r--
Formatting and spelling fixes
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
};