![]() |
AzerothCore 3.3.5a
OpenSource WoW Emulator
|
#include "PCQueue.h"
Public Member Functions | |
ProducerConsumerQueue ()=default | |
void | Push (const T &value) |
bool | Empty () const |
std::size_t | Size () const |
bool | Pop (T &value) |
void | WaitAndPop (T &value) |
void | Cancel () |
void | Shutdown () |
Private Member Functions | |
template<typename E = T> | |
std::enable_if< std::is_pointer< E >::value >::type | DeleteQueuedObject (E &obj) |
template<typename E = T> | |
std::enable_if<!std::is_pointer< E >::value >::type | DeleteQueuedObject (E const &) |
Private Attributes | |
std::mutex | _queueLock |
std::queue< T > | _queue |
std::condition_variable | _condition |
std::atomic< bool > | _cancel {} |
std::atomic< bool > | _shutdown {} |
|
default |
|
inline |
References ProducerConsumerQueue< T >::_cancel, ProducerConsumerQueue< T >::_condition, ProducerConsumerQueue< T >::_queue, ProducerConsumerQueue< T >::_queueLock, and ProducerConsumerQueue< T >::DeleteQueuedObject().
Referenced by MapUpdater::deactivate(), and AuctionHouseSearcher::~AuctionHouseSearcher().
|
inlineprivate |
Referenced by ProducerConsumerQueue< T >::Cancel().
|
inlineprivate |
|
inline |
References ProducerConsumerQueue< T >::_queue, and ProducerConsumerQueue< T >::_queueLock.
|
inline |
References ProducerConsumerQueue< T >::_cancel, ProducerConsumerQueue< T >::_queue, and ProducerConsumerQueue< T >::_queueLock.
Referenced by AuctionHouseWorkerThread::ProcessSearchRequests().
|
inline |
References ProducerConsumerQueue< T >::_condition, ProducerConsumerQueue< T >::_queue, and ProducerConsumerQueue< T >::_queueLock.
Referenced by AuctionHouseSearcher::QueueSearchRequest(), and MapUpdater::schedule_task().
|
inline |
References ProducerConsumerQueue< T >::_condition, and ProducerConsumerQueue< T >::_shutdown.
|
inline |
References ProducerConsumerQueue< T >::_queue, and ProducerConsumerQueue< T >::_queueLock.
|
inline |
References ProducerConsumerQueue< T >::_cancel, ProducerConsumerQueue< T >::_condition, ProducerConsumerQueue< T >::_queue, ProducerConsumerQueue< T >::_queueLock, and ProducerConsumerQueue< T >::_shutdown.
Referenced by DatabaseWorker::WorkerThread(), and MapUpdater::WorkerThread().
|
private |
Referenced by ProducerConsumerQueue< T >::Cancel(), ProducerConsumerQueue< T >::Pop(), and ProducerConsumerQueue< T >::WaitAndPop().
|
private |
|
private |
|
mutableprivate |
|
private |
Referenced by ProducerConsumerQueue< T >::Shutdown(), and ProducerConsumerQueue< T >::WaitAndPop().