|
Thread System 0.3.1
High-performance C++20 thread pool with work stealing and DAG scheduling
|
Synchronization policy using mutex and condition variable. More...
#include <sync_policies.h>

Public Types | |
| using | policy_tag = sync_policy_tag |
Public Member Functions | |
| mutex_sync_policy () | |
| Construct mutex sync policy. | |
| ~mutex_sync_policy ()=default | |
| Destructor. | |
| mutex_sync_policy (const mutex_sync_policy &)=delete | |
| mutex_sync_policy & | operator= (const mutex_sync_policy &)=delete |
| mutex_sync_policy (mutex_sync_policy &&)=delete | |
| mutex_sync_policy & | operator= (mutex_sync_policy &&)=delete |
| auto | enqueue (std::unique_ptr< job > &&value) -> common::VoidResult |
| Enqueue a job. | |
| auto | dequeue () -> common::Result< std::unique_ptr< job > > |
| Dequeue a job (blocking) | |
| auto | try_dequeue () -> common::Result< std::unique_ptr< job > > |
| Try to dequeue a job (non-blocking) | |
| auto | empty () const -> bool |
| Check if queue is empty. | |
| auto | size () const -> std::size_t |
| Get queue size (exact) | |
| auto | clear () -> void |
| Clear all jobs from queue. | |
| auto | stop () -> void |
| Stop the queue. | |
| auto | is_stopped () const -> bool |
| Check if queue is stopped. | |
| auto | set_notify (bool notify) -> void |
| Set notify flag. | |
Static Public Member Functions | |
| static constexpr auto | get_capabilities () -> queue_capabilities |
| Queue capabilities for mutex sync policy. | |
Private Attributes | |
| std::mutex | mutex_ |
| std::condition_variable | condition_ |
| std::deque< std::unique_ptr< job > > | queue_ |
| std::atomic< bool > | notify_ |
| std::atomic< bool > | stop_ |
Synchronization policy using mutex and condition variable.
Provides exact size/empty operations with full blocking support. Suitable for scenarios requiring accurate queue state or blocking waits.
Definition at line 47 of file sync_policies.h.
Definition at line 49 of file sync_policies.h.
|
inline |
Construct mutex sync policy.
Definition at line 69 of file sync_policies.h.
|
default |
Destructor.
|
delete |
|
delete |
|
inline |
Clear all jobs from queue.
Definition at line 159 of file sync_policies.h.
|
inlinenodiscard |
Dequeue a job (blocking)
Definition at line 106 of file sync_policies.h.
References condition_, mutex_, queue_, and stop_.
|
inlinenodiscard |
|
inlinenodiscard |
Enqueue a job.
| value | Job to enqueue |
Definition at line 87 of file sync_policies.h.
References condition_, mutex_, notify_, and queue_.
|
inlinestaticnodiscardconstexpr |
Queue capabilities for mutex sync policy.
Definition at line 54 of file sync_policies.h.
Referenced by kcenon::thread::policies::adaptive_sync_policy::get_capabilities().

|
inlinenodiscard |
Check if queue is stopped.
Definition at line 176 of file sync_policies.h.
References stop_.
|
delete |
|
delete |
|
inline |
Set notify flag.
| notify | Whether to notify on enqueue |
Definition at line 184 of file sync_policies.h.
References notify_.
|
inlinenodiscard |
|
inline |
|
inlinenodiscard |
Try to dequeue a job (non-blocking)
Definition at line 126 of file sync_policies.h.
|
private |
Definition at line 190 of file sync_policies.h.
|
mutableprivate |
Definition at line 189 of file sync_policies.h.
Referenced by clear(), dequeue(), empty(), enqueue(), size(), and try_dequeue().
|
private |
Definition at line 192 of file sync_policies.h.
Referenced by enqueue(), and set_notify().
|
private |
Definition at line 191 of file sync_policies.h.
Referenced by clear(), dequeue(), empty(), enqueue(), size(), and try_dequeue().
|
private |
Definition at line 193 of file sync_policies.h.
Referenced by dequeue(), is_stopped(), and stop().