29template<
typename SyncPolicy,
typename BoundPolicy,
typename OverflowPolicy>
57 [[nodiscard]]
virtual auto enqueue(std::unique_ptr<job>&&
job) -> common::VoidResult = 0;
64 [[nodiscard]]
virtual auto enqueue_batch(std::vector<std::unique_ptr<job>>&& jobs) -> common::VoidResult = 0;
70 [[nodiscard]]
virtual auto dequeue() -> common::Result<std::unique_ptr<job>> = 0;
76 [[nodiscard]]
virtual auto try_dequeue() -> common::Result<std::unique_ptr<job>> = 0;
82 [[nodiscard]]
virtual auto empty() const ->
bool = 0;
88 [[nodiscard]] virtual auto
size() const ->
std::
size_t = 0;
93 virtual auto
clear() ->
void = 0;
98 virtual auto
stop() ->
void = 0;
A thread-safe job queue for managing and dispatching work items.
Represents a unit of work (task) to be executed, typically by a job queue.
Abstract interface for queue adapters used by thread_pool.
virtual auto enqueue(std::unique_ptr< job > &&job) -> common::VoidResult=0
Enqueue a job.
virtual auto to_string() const -> std::string=0
Get string representation.
virtual auto is_stopped() const -> bool=0
Check if queue is stopped.
virtual auto try_dequeue() -> common::Result< std::unique_ptr< job > >=0
Try to dequeue a job (non-blocking)
virtual auto get_scheduler() -> scheduler_interface &=0
Get the underlying scheduler interface.
virtual auto enqueue_batch(std::vector< std::unique_ptr< job > > &&jobs) -> common::VoidResult=0
Enqueue a batch of jobs.
virtual auto dequeue() -> common::Result< std::unique_ptr< job > >=0
Dequeue a job (blocking)
virtual auto clear() -> void=0
Clear all jobs from queue.
virtual auto stop() -> void=0
Stop the queue.
virtual auto get_capabilities() const -> queue_capabilities=0
Get queue capabilities.
virtual ~pool_queue_adapter_interface()=default
virtual auto get_job_queue() const -> std::shared_ptr< job_queue >=0
Get the underlying job_queue if this adapter wraps one.
virtual auto empty() const -> bool=0
Check if queue is empty.
virtual auto size() const -> std::size_t=0
Get queue size.
Scheduler interface for queuing and retrieving jobs.
Error codes and utilities for the thread system.
Base job class for schedulable work units in the thread system.
Core threading foundation of the thread system library.
Mixin interface for queue capability introspection.
Abstract scheduler interface for queuing and retrieving jobs.
Runtime-queryable queue capabilities descriptor.