Bitcoin
Public Member Functions | Private Attributes | List of all members
WorkQueue< WorkItem > Class Template Reference

Public Member Functions

 WorkQueue (size_t _maxDepth)
 
 ~WorkQueue ()
 
bool Enqueue (WorkItem *item)
 
void Run ()
 
void Interrupt ()
 

Private Attributes

Mutex cs
 
std::condition_variable cond
 
std::deque< std::unique_ptr< WorkItem > > queue
 
bool running
 
size_t maxDepth
 

Detailed Description

template<typename WorkItem>
class WorkQueue< WorkItem >

Simple work queue for distributing work over multiple threads. Work items are simply callable objects.

Constructor & Destructor Documentation

◆ WorkQueue()

template<typename WorkItem >
WorkQueue< WorkItem >::WorkQueue ( size_t  _maxDepth)
inlineexplicit

◆ ~WorkQueue()

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

Precondition: worker threads have all stopped (they have been joined).

Member Function Documentation

◆ Enqueue()

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

Enqueue a work item

◆ Interrupt()

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

Interrupt and exit loops

◆ Run()

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

Thread function

Member Data Documentation

◆ cond

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

◆ cs

template<typename WorkItem >
Mutex WorkQueue< WorkItem >::cs
private

Mutex protects entire object

◆ maxDepth

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

◆ queue

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

◆ running

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

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