Linux下设计并发队列
设计并发队列#include <pthread.h>#include <list>using namespace std;template <typename T>class Queue { public: Queue( ) { pthread_mutex_init(&_lock, NULL); } ~Queue( ) { pthread_mutex_destroy(&_lock); } void push(const T& data); T pop( ); private: list<T> _list; pthread_mutex_t _lock;};template <typename T>void Queue<T>::push(const T& value ) { pthread_mutex_lock(&_lock); _list.push_back(value); pthread_mutex_unlock(&_lock);}template <typename T>T Queue<T>::pop( ) { if (_list.empty( )) { throw "element not found"; } pthread_mutex_lock(&_lock); T _temp = _list.front( ); _list.pop_front( ); pthread_mutex_unlock(&_lock); return _temp;}
页:
[1]