diff options
Diffstat (limited to 'src/threadsafe_queue_fifo.cc')
-rw-r--r-- | src/threadsafe_queue_fifo.cc | 38 |
1 files changed, 15 insertions, 23 deletions
diff --git a/src/threadsafe_queue_fifo.cc b/src/threadsafe_queue_fifo.cc index 633cb58..50c1067 100644 --- a/src/threadsafe_queue_fifo.cc +++ b/src/threadsafe_queue_fifo.cc @@ -26,10 +26,9 @@ */ #include "config.h" #include "threadsafe_queue_fifo.h" -/* + template <typename T> ThreadSafeQueueFIFO<T>::ThreadSafeQueueFIFO() - // : ThreadSafeQueue<T>() { } @@ -41,29 +40,25 @@ ThreadSafeQueueFIFO<T>::~ThreadSafeQueueFIFO() template <typename T> void ThreadSafeQueueFIFO<T>::push(T t) { - // Lock mutex - pthread_mutex_lock( &mutex ); + mutex.lock(); queue.push(t); - pthread_mutex_unlock( &mutex ); - // Unlock mutex - - sem_post(&semaphore); + mutex.unlock(); + + semaphore.post(); } template <typename T> T ThreadSafeQueueFIFO<T>::pop() { - sem_wait(&semaphore); - + semaphore.wait(); + T t; - - // Lock mutex - pthread_mutex_lock( &mutex ); + + mutex.lock(); t = queue.front(); queue.pop(); - pthread_mutex_unlock( &mutex ); - // Unlock mutex - + mutex.unlock(); + return t; } @@ -71,13 +66,10 @@ template <typename T> int ThreadSafeQueueFIFO<T>::size() { int sz; - - // Lock mutex - pthread_mutex_lock( &mutex ); + + mutex.lock(); sz = queue.size(); - pthread_mutex_unlock( &mutex ); - // Unlock mutex - + mutex.unlock(); + return sz; } -*/ |