X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fthreads%2FSGQueue.hxx;h=80877375e96fa391c57c449e54aa1d670d73ad4e;hb=eb06a90109f9a69a7cf0d2af87714b8147acc024;hp=9f534ec909a34e53b01e99c0e8f42b85fcaa0989;hpb=a75b4af3744039072c7a03ef4ed6fcb536763937;p=simgear.git diff --git a/simgear/threads/SGQueue.hxx b/simgear/threads/SGQueue.hxx index 9f534ec9..80877375 100644 --- a/simgear/threads/SGQueue.hxx +++ b/simgear/threads/SGQueue.hxx @@ -3,15 +3,11 @@ #include -#if defined ( SG_HAVE_STD_INCLUDES ) -# include -#else -# include -#endif - +#include #include -#include "SGThread.hxx" -#include "SGGuard.hxx" +#include +#include +#include /** * SGQueue defines an interface for a FIFO. @@ -78,7 +74,7 @@ protected: /** * A simple thread safe queue. All access functions are guarded with a mutex. */ -template +template class SGLockedQueue : public SGQueue { public: @@ -99,7 +95,7 @@ public: * @return bool True if queue is empty, otherwisr false. */ virtual bool empty() { - SGGuard g(mutex); + OpenThreads::ScopedLock g(mutex); return this->fifo.empty(); } @@ -109,7 +105,7 @@ public: * @param T object to add. */ virtual void push( const T& item ) { - SGGuard g(mutex); + OpenThreads::ScopedLock g(mutex); this->fifo.push( item ); } @@ -119,7 +115,7 @@ public: * @return T next available object. */ virtual T front() { - SGGuard g(mutex); + OpenThreads::ScopedLock g(mutex); assert( ! this->fifo.empty() ); T item = this->fifo.front(); return item; @@ -131,7 +127,7 @@ public: * @return T next available object. */ virtual T pop() { - SGGuard g(mutex); + OpenThreads::ScopedLock g(mutex); //if (fifo.empty()) throw NoSuchElementException(); assert( ! this->fifo.empty() ); // if (fifo.empty()) @@ -150,7 +146,7 @@ public: * @return size_t size of queue. */ virtual size_t size() { - SGGuard g(mutex); + OpenThreads::ScopedLock g(mutex); return this->fifo.size(); } @@ -189,7 +185,7 @@ public: * */ virtual bool empty() { - SGGuard g(mutex); + OpenThreads::ScopedLock g(mutex); return this->fifo.empty(); } @@ -199,7 +195,7 @@ public: * @param T object to add. */ virtual void push( const T& item ) { - SGGuard g(mutex); + OpenThreads::ScopedLock g(mutex); this->fifo.push( item ); not_empty.signal(); } @@ -211,7 +207,7 @@ public: * @return T next available object. */ virtual T front() { - SGGuard g(mutex); + OpenThreads::ScopedLock g(mutex); assert(this->fifo.empty() != true); //if (fifo.empty()) throw ?? @@ -227,10 +223,10 @@ public: * @return T next available object. */ virtual T pop() { - SGGuard g(mutex); + OpenThreads::ScopedLock g(mutex); while (this->fifo.empty()) - not_empty.wait(mutex); + not_empty.wait(&mutex); assert(this->fifo.empty() != true); //if (fifo.empty()) throw ?? @@ -246,7 +242,7 @@ public: * @return size_t size of queue. */ virtual size_t size() { - SGGuard g(mutex); + OpenThreads::ScopedLock g(mutex); return this->fifo.size(); } @@ -255,12 +251,12 @@ private: /** * Mutex to serialise access. */ - SGMutex mutex; + OpenThreads::Mutex mutex; /** * Condition to signal when queue not empty. */ - SGPthreadCond not_empty; + OpenThreads::Condition not_empty; private: // Prevent copying.