PRCYCoin  2.0.0.7rc1
P2P Digital Currency
Classes | Public Member Functions | Private Attributes | List of all members
WorkQueue< WorkItem > Class Template Reference

Simple work queue for distributing work over multiple threads. More...

Classes

class  ThreadCounter
 RAII object to keep track of number of running worker threads. More...
 

Public Member Functions

 WorkQueue (size_t maxDepth)
 
 ~WorkQueue ()
 
bool Enqueue (WorkItem *item)
 Enqueue a work item. More...
 
void Run ()
 Thread function. More...
 
void Interrupt ()
 Interrupt and exit loops. More...
 
void WaitExit ()
 Wait for worker threads to exit. More...
 
size_t Depth ()
 Return current depth of queue. More...
 

Private Attributes

std::mutex cs
 Mutex protects entire object. More...
 
std::condition_variable cond
 
std::deque< WorkItem * > queue
 
bool running
 
size_t maxDepth
 
int numThreads
 

Detailed Description

template<typename WorkItem>
class WorkQueue< WorkItem >

Simple work queue for distributing work over multiple threads.

Work items are simply callable objects.

Definition at line 69 of file httpserver.cpp.

Constructor & Destructor Documentation

◆ WorkQueue()

template<typename WorkItem >
WorkQueue< WorkItem >::WorkQueue ( size_t  maxDepth)
inline

Definition at line 100 of file httpserver.cpp.

◆ ~WorkQueue()

template<typename WorkItem >
WorkQueue< WorkItem >::~WorkQueue ( )
inline

Definition at line 108 of file httpserver.cpp.

Member Function Documentation

◆ Depth()

template<typename WorkItem >
size_t WorkQueue< WorkItem >::Depth ( )
inline

Return current depth of queue.

Definition at line 161 of file httpserver.cpp.

◆ Enqueue()

template<typename WorkItem >
bool WorkQueue< WorkItem >::Enqueue ( WorkItem *  item)
inline

Enqueue a work item.

Definition at line 116 of file httpserver.cpp.

◆ Interrupt()

template<typename WorkItem >
void WorkQueue< WorkItem >::Interrupt ( )
inline

Interrupt and exit loops.

Definition at line 146 of file httpserver.cpp.

◆ Run()

template<typename WorkItem >
void WorkQueue< WorkItem >::Run ( )
inline

Thread function.

Definition at line 127 of file httpserver.cpp.

◆ WaitExit()

template<typename WorkItem >
void WorkQueue< WorkItem >::WaitExit ( )
inline

Wait for worker threads to exit.

Definition at line 153 of file httpserver.cpp.

Member Data Documentation

◆ cond

template<typename WorkItem >
std::condition_variable WorkQueue< WorkItem >::cond
private

Definition at line 74 of file httpserver.cpp.

◆ cs

template<typename WorkItem >
std::mutex WorkQueue< WorkItem >::cs
private

Mutex protects entire object.

Definition at line 73 of file httpserver.cpp.

◆ maxDepth

template<typename WorkItem >
size_t WorkQueue< WorkItem >::maxDepth
private

Definition at line 78 of file httpserver.cpp.

◆ numThreads

template<typename WorkItem >
int WorkQueue< WorkItem >::numThreads
private

Definition at line 79 of file httpserver.cpp.

◆ queue

template<typename WorkItem >
std::deque<WorkItem*> WorkQueue< WorkItem >::queue
private

Definition at line 76 of file httpserver.cpp.

◆ running

template<typename WorkItem >
bool WorkQueue< WorkItem >::running
private

Definition at line 77 of file httpserver.cpp.


The documentation for this class was generated from the following file: