Thread System 0.3.1
High-performance C++20 thread pool with work stealing and DAG scheduling
Loading...
Searching...
No Matches
SmartJobProcessor Class Reference

Smart job processor that adapts to queue capabilities. More...

Collaboration diagram for SmartJobProcessor:
Collaboration graph

Public Member Functions

 SmartJobProcessor (bool need_exact_metrics)
 
void log_status () const
 
bool has_exact_metrics () const
 

Private Member Functions

size_t get_size () const
 

Private Attributes

std::unique_ptr< scheduler_interfacequeue_
 
bool exact_metrics_available_
 

Detailed Description

Smart job processor that adapts to queue capabilities.

Demonstrates capability-driven queue selection and usage.

Examples
queue_capabilities_sample.cpp.

Definition at line 157 of file queue_capabilities_sample.cpp.

Constructor & Destructor Documentation

◆ SmartJobProcessor()

SmartJobProcessor::SmartJobProcessor ( bool need_exact_metrics)
inlineexplicit
Examples
queue_capabilities_sample.cpp.

Definition at line 162 of file queue_capabilities_sample.cpp.

163 {
164 if (need_exact_metrics) {
165 auto jq = std::make_unique<job_queue>();
167 queue_ = std::move(jq);
168 } else {
169 auto lfq = std::make_unique<detail::lockfree_job_queue>();
171 queue_ = std::move(lfq);
172 }
173 }
std::unique_ptr< scheduler_interface > queue_

References exact_metrics_available_, and queue_.

Member Function Documentation

◆ get_size()

size_t SmartJobProcessor::get_size ( ) const
inlinenodiscardprivate
Examples
queue_capabilities_sample.cpp.

Definition at line 189 of file queue_capabilities_sample.cpp.

190 {
191 if (auto* cap = dynamic_cast<queue_capabilities_interface*>(queue_.get())) {
192 // Use the polymorphic interface for demonstration
193 if (auto* jq = dynamic_cast<job_queue*>(queue_.get())) {
194 return jq->size();
195 }
196 if (auto* lfq = dynamic_cast<detail::lockfree_job_queue*>(queue_.get())) {
197 return lfq->size();
198 }
199 }
200 return 0;
201 }
Lock-free Multi-Producer Multi-Consumer (MPMC) job queue (Internal implementation)
A thread-safe job queue for managing and dispatching work items.
Definition job_queue.h:65
Mixin interface for queue capability introspection.

References queue_.

Referenced by log_status().

Here is the caller graph for this function:

◆ has_exact_metrics()

bool SmartJobProcessor::has_exact_metrics ( ) const
inlinenodiscard
Examples
queue_capabilities_sample.cpp.

Definition at line 186 of file queue_capabilities_sample.cpp.

186{ return exact_metrics_available_; }

References exact_metrics_available_.

Referenced by capability_driven_selection().

Here is the caller graph for this function:

◆ log_status()

void SmartJobProcessor::log_status ( ) const
inline
Examples
queue_capabilities_sample.cpp.

Definition at line 175 of file queue_capabilities_sample.cpp.

176 {
178 // Safe to use for monitoring/alerting
179 std::cout << " Exact queue size: " << get_size() << std::endl;
180 } else {
181 // Approximate, for logging only
182 std::cout << " Approximate queue size: ~" << get_size() << std::endl;
183 }
184 }

References exact_metrics_available_, and get_size().

Referenced by capability_driven_selection().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ exact_metrics_available_

bool SmartJobProcessor::exact_metrics_available_
private

◆ queue_

std::unique_ptr<scheduler_interface> SmartJobProcessor::queue_
private
Examples
queue_capabilities_sample.cpp.

Definition at line 158 of file queue_capabilities_sample.cpp.

Referenced by get_size(), and SmartJobProcessor().


The documentation for this class was generated from the following file: