Thread System 0.3.1
High-performance C++20 thread pool with work stealing and DAG scheduling
Loading...
Searching...
No Matches
job_queue_adapter.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2025, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
12#pragma once
13
16
17namespace kcenon::thread {
18
34public:
39 explicit job_queue_adapter(std::shared_ptr<job_queue> queue)
40 : queue_(std::move(queue)) {}
41
46 : queue_(std::make_shared<job_queue>()) {}
47
48 ~job_queue_adapter() override = default;
49
50 // Non-copyable
53
54 // Movable
57
58 [[nodiscard]] auto enqueue(std::unique_ptr<job>&& j) -> common::VoidResult override {
59 return queue_->enqueue(std::move(j));
60 }
61
62 [[nodiscard]] auto enqueue_batch(std::vector<std::unique_ptr<job>>&& jobs) -> common::VoidResult override {
63 return queue_->enqueue_batch(std::move(jobs));
64 }
65
66 [[nodiscard]] auto dequeue() -> common::Result<std::unique_ptr<job>> override {
67 return queue_->dequeue();
68 }
69
70 [[nodiscard]] auto try_dequeue() -> common::Result<std::unique_ptr<job>> override {
71 return queue_->try_dequeue();
72 }
73
74 [[nodiscard]] auto empty() const -> bool override {
75 return queue_->empty();
76 }
77
78 [[nodiscard]] auto size() const -> std::size_t override {
79 return queue_->size();
80 }
81
82 auto clear() -> void override {
83 queue_->clear();
84 }
85
86 auto stop() -> void override {
87 queue_->stop();
88 }
89
90 [[nodiscard]] auto is_stopped() const -> bool override {
91 return queue_->is_stopped();
92 }
93
94 [[nodiscard]] auto get_capabilities() const -> queue_capabilities override {
95 return queue_->get_capabilities();
96 }
97
98 [[nodiscard]] auto to_string() const -> std::string override {
99 return queue_->to_string();
100 }
101
102 [[nodiscard]] auto get_job_queue() const -> std::shared_ptr<job_queue> override {
103 return queue_;
104 }
105
106 [[nodiscard]] auto get_scheduler() -> scheduler_interface& override {
107 return *queue_;
108 }
109
110 [[nodiscard]] auto get_scheduler() const -> const scheduler_interface& override {
111 return *queue_;
112 }
113
114private:
115 std::shared_ptr<job_queue> queue_;
116};
117
118} // namespace kcenon::thread
Adapter for job_queue to pool_queue_adapter_interface.
auto get_scheduler() const -> const scheduler_interface &override
Get the underlying scheduler interface (const)
job_queue_adapter & operator=(const job_queue_adapter &)=delete
job_queue_adapter & operator=(job_queue_adapter &&)=default
auto empty() const -> bool override
Check if queue is empty.
auto enqueue(std::unique_ptr< job > &&j) -> common::VoidResult override
Enqueue a job.
auto clear() -> void override
Clear all jobs from queue.
auto try_dequeue() -> common::Result< std::unique_ptr< job > > override
Try to dequeue a job (non-blocking)
auto get_scheduler() -> scheduler_interface &override
Get the underlying scheduler interface.
job_queue_adapter()
Construct adapter with new job_queue.
job_queue_adapter(const job_queue_adapter &)=delete
auto get_job_queue() const -> std::shared_ptr< job_queue > override
Get the underlying job_queue if this adapter wraps one.
auto dequeue() -> common::Result< std::unique_ptr< job > > override
Dequeue a job (blocking)
std::shared_ptr< job_queue > queue_
job_queue_adapter(std::shared_ptr< job_queue > queue)
Construct adapter with existing job_queue.
job_queue_adapter(job_queue_adapter &&)=default
~job_queue_adapter() override=default
auto is_stopped() const -> bool override
Check if queue is stopped.
auto enqueue_batch(std::vector< std::unique_ptr< job > > &&jobs) -> common::VoidResult override
Enqueue a batch of jobs.
auto to_string() const -> std::string override
Get string representation.
auto get_capabilities() const -> queue_capabilities override
Get queue capabilities.
auto stop() -> void override
Stop the queue.
auto size() const -> std::size_t override
Get queue size.
A thread-safe job queue for managing and dispatching work items.
Definition job_queue.h:65
Abstract interface for queue adapters used by thread_pool.
Scheduler interface for queuing and retrieving jobs.
Thread-safe FIFO job queue with optional bounded size.
Core threading foundation of the thread system library.
Definition thread_impl.h:17
STL namespace.
Abstract interface for queue adapters used by thread_pool.
Runtime-queryable queue capabilities descriptor.