thread safe deque // cpp

For a university project i’ve written a simple and small (and i mean really small and really simple) thread-safe deque. The code is attached.
Feel free to use and improve it!

#pragma once
#include<deque>
#include<mutex>

using namespace std;

template<class T>
class ThreadSafeQueue
{

public:
	ThreadSafeQueue()
	{
		queue = new std::deque<T>();
	};

	~ThreadSafeQueue()
	{
		mu.unlock();
		delete deque
	};

	T* getOldestElement()
	{
		mu.lock();
		res = queue->front();
		mu.unlock();
		return res;
	};

	T back(){
		T res;
		mu.lock();
		res = queue->back();
		mu.unlock();
		return res;
	}

	void pop_back(){
		mu.lock();
		delete queue->back();
		queue->pop_back();
		mu.unlock();
	}

	void push_front(T tmp)
	{
		mu.lock();
		queue->push_front(tmp);
		mu.unlock();
	};

	int size()
	{
		int size = 0;
		mu.lock();
		size = queue->size();
		mu.unlock();
		return size;
	};

	T front(){
		T res;
		mu.lock();
		res = queue->front();
		mu.unlock();
		return res;
	}

	T at(int i)
	{
		T res;
		mu.lock();
		res = queue->at(i);
		mu.unlock();
		return res;
	}

private:
	mutex mu;
	deque<T>* queue;
};



Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s