QuantumLibrary
Bloomberg::quantum::TaskQueue Class Reference

Thread queue for running coroutines. More...

#include <quantum_task_queue.h>

Inheritance diagram for Bloomberg::quantum::TaskQueue:
Bloomberg::quantum::IQueue Bloomberg::quantum::ITerminate

Public Types

using TaskList = std::list< Task::Ptr, QueueListAllocator >
 
using TaskListIter = TaskList::iterator
 
- Public Types inherited from Bloomberg::quantum::IQueue
enum  QueueType : int { QueueType::Coro, QueueType::IO, QueueType::All }
 
enum  QueueId : int { QueueId::Any = -1, QueueId::Same = -2, QueueId::All = -3 }
 
using Ptr = std::shared_ptr< IQueue >
 

Public Member Functions

 TaskQueue ()
 
 TaskQueue (const Configuration &config)
 
 TaskQueue (const TaskQueue &other)
 
 TaskQueue (TaskQueue &&other)=default
 
 ~TaskQueue ()
 
void pinToCore (int coreId) final
 
void run () final
 
void enqueue (ITask::Ptr task) final
 
bool tryEnqueue (ITask::Ptr task) final
 
ITask::Ptr dequeue (std::atomic_bool &hint) final
 
ITask::Ptr tryDequeue (std::atomic_bool &hint) final
 
size_t size () const final
 
bool empty () const final
 
void terminate () final
 Terminates the object. More...
 
IQueueStatisticsstats () final
 
SpinLockgetLock () final
 
void signalEmptyCondition (bool value) final
 
bool isIdle () const final
 
- Public Member Functions inherited from Bloomberg::quantum::ITerminate
virtual ~ITerminate ()=default
 Virtual destructor. This function is explicitly left empty. More...
 

Detailed Description

Thread queue for running coroutines.

Note
For internal use only.

Member Typedef Documentation

◆ TaskList

◆ TaskListIter

using Bloomberg::quantum::TaskQueue::TaskListIter = TaskList::iterator

Constructor & Destructor Documentation

◆ TaskQueue() [1/4]

Bloomberg::quantum::TaskQueue::TaskQueue ( )
inline

◆ TaskQueue() [2/4]

Bloomberg::quantum::TaskQueue::TaskQueue ( const Configuration config)
inlineexplicit

◆ TaskQueue() [3/4]

Bloomberg::quantum::TaskQueue::TaskQueue ( const TaskQueue other)
inline

◆ TaskQueue() [4/4]

Bloomberg::quantum::TaskQueue::TaskQueue ( TaskQueue &&  other)
default

◆ ~TaskQueue()

Bloomberg::quantum::TaskQueue::~TaskQueue ( )
inline

Member Function Documentation

◆ dequeue()

ITask::Ptr Bloomberg::quantum::TaskQueue::dequeue ( std::atomic_bool &  hint)
inlinefinalvirtual

◆ empty()

bool Bloomberg::quantum::TaskQueue::empty ( ) const
inlinefinalvirtual

◆ enqueue()

void Bloomberg::quantum::TaskQueue::enqueue ( ITask::Ptr  task)
inlinefinalvirtual

◆ getLock()

SpinLock & Bloomberg::quantum::TaskQueue::getLock ( )
inlinefinalvirtual

◆ isIdle()

bool Bloomberg::quantum::TaskQueue::isIdle ( ) const
inlinefinalvirtual

◆ pinToCore()

void Bloomberg::quantum::TaskQueue::pinToCore ( int  coreId)
inlinefinalvirtual

◆ run()

void Bloomberg::quantum::TaskQueue::run ( )
inlinefinalvirtual

◆ signalEmptyCondition()

void Bloomberg::quantum::TaskQueue::signalEmptyCondition ( bool  value)
inlinefinalvirtual

◆ size()

size_t Bloomberg::quantum::TaskQueue::size ( ) const
inlinefinalvirtual

◆ stats()

IQueueStatistics & Bloomberg::quantum::TaskQueue::stats ( )
inlinefinalvirtual

◆ terminate()

void Bloomberg::quantum::TaskQueue::terminate ( )
inlinefinalvirtual

Terminates the object.

Note
This method should contain all logic necessary to properly cleanup this instance.

Implements Bloomberg::quantum::ITerminate.

◆ tryDequeue()

ITask::Ptr Bloomberg::quantum::TaskQueue::tryDequeue ( std::atomic_bool &  hint)
inlinefinalvirtual

◆ tryEnqueue()

bool Bloomberg::quantum::TaskQueue::tryEnqueue ( ITask::Ptr  task)
inlinefinalvirtual