16 #ifndef BLOOMBERG_QUANTUM_TASK_QUEUE_H 17 #define BLOOMBERG_QUANTUM_TASK_QUEUE_H 24 #include <condition_variable> 28 #include <quantum/interface/quantum_itask_continuation.h> 29 #include <quantum/interface/quantum_iterminate.h> 30 #include <quantum/interface/quantum_iqueue.h> 31 #include <quantum/quantum_spinlock.h> 32 #include <quantum/quantum_yielding_thread.h> 33 #include <quantum/quantum_queue_statistics.h> 34 #include <quantum/quantum_configuration.h> 48 using TaskList = std::list<Task::Ptr, QueueListAllocator>;
73 size_t size() const final;
75 bool empty() const final;
92 std::shared_ptr<
std::thread> _thread;
97 std::mutex _notEmptyMutex;
98 std::condition_variable _notEmptyCond;
99 std::atomic_bool _isEmpty;
100 std::atomic_bool _isInterrupted;
101 std::atomic_bool _isIdle;
102 std::atomic_flag _terminated;
109 #include <quantum/impl/quantum_task_queue_impl.h> 111 #endif //BLOOMBERG_QUANTUM_TASK_QUEUE_H Definition: quantum_buffer_impl.h:22
size_t size() const final
Definition: quantum_task_queue_impl.h:282
void terminate() final
Terminates the object.
Definition: quantum_task_queue_impl.h:299
std::list< Task::Ptr, QueueListAllocator > TaskList
Definition: quantum_task_queue.h:48
~TaskQueue()
Definition: quantum_task_queue_impl.h:53
Definition: quantum_stl_impl.h:23
bool tryEnqueue(ITask::Ptr task) final
Definition: quantum_task_queue_impl.h:206
void run() final
Definition: quantum_task_queue_impl.h:76
Interface to a task queue. For internal use only.
Definition: quantum_iqueue.h:33
Provides various counters related to queues and task execution.
Definition: quantum_queue_statistics.h:30
bool isIdle() const final
Definition: quantum_task_queue_impl.h:364
IQueueStatistics & stats() final
Definition: quantum_task_queue_impl.h:320
Definition: quantum_configuration.h:31
ITask::Ptr dequeue(std::atomic_bool &hint) final
Definition: quantum_task_queue_impl.h:247
Thread queue for running coroutines.
Definition: quantum_task_queue.h:45
TaskQueue()
Definition: quantum_task_queue_impl.h:26
std::shared_ptr< IQueue > Ptr
Definition: quantum_iqueue.h:36
bool empty() const final
Definition: quantum_task_queue_impl.h:293
void pinToCore(int coreId) final
Definition: quantum_task_queue_impl.h:59
SpinLock & getLock() final
Definition: quantum_task_queue_impl.h:326
void signalEmptyCondition(bool value) final
Definition: quantum_task_queue_impl.h:332
void enqueue(ITask::Ptr task) final
Definition: quantum_task_queue_impl.h:194
Interface to access and manipulate a QueueStatistics object.
Definition: quantum_iqueue_statistics.h:29
Interface to a task. For internal use only.
Definition: quantum_itask.h:32
ITask::Ptr tryDequeue(std::atomic_bool &hint) final
Definition: quantum_task_queue_impl.h:255
TaskList::iterator TaskListIter
Definition: quantum_task_queue.h:49