28 void example_default_config()
30 std::cout <<
"\n=== Example 1: Default Configuration ===\n";
36 std::cout <<
"Backpressure policy: "
46 void example_builder_basic()
48 std::cout <<
"\n=== Example 2: Builder Pattern (Basic) ===\n";
52 .with_queue_capacity(5000)
55 std::cout <<
"Worker count: " << config.pool.worker_count <<
"\n";
56 std::cout <<
"Queue capacity: " << config.pool.queue_capacity <<
"\n";
57 std::cout <<
"Configuration is valid: " << (config.is_valid() ?
"yes" :
"no") <<
"\n";
65 void example_backpressure_config()
67 std::cout <<
"\n=== Example 3: Backpressure Configuration ===\n";
71 .with_queue_capacity(1000)
72 .enable_backpressure()
74 .with_watermarks(0.5, 0.8)
77 std::cout <<
"Backpressure enabled: yes\n";
78 std::cout <<
"Policy: "
81 std::cout <<
"Low watermark: " << config.pool.backpressure.low_watermark <<
"\n";
82 std::cout <<
"High watermark: " << config.pool.backpressure.high_watermark <<
"\n";
90 void example_circuit_breaker_config()
92 std::cout <<
"\n=== Example 4: Circuit Breaker Configuration ===\n";
96 .enable_circuit_breaker()
97 .with_failure_threshold(5)
98 .with_open_duration(std::chrono::seconds{30})
101 std::cout <<
"Circuit breaker enabled: yes\n";
102 std::cout <<
"Failure threshold: "
103 << config.resilience.circuit_breaker.failure_threshold <<
"\n";
104 std::cout <<
"Open duration: "
105 << config.resilience.circuit_breaker.timeout.count() <<
"s\n";
106 std::cout <<
"Half-open max requests: "
107 << config.resilience.circuit_breaker.half_open_max_requests <<
"\n";
115 void example_work_stealing_config()
117 std::cout <<
"\n=== Example 5: Work Stealing Configuration ===\n";
120 .with_worker_count(8)
121 .enable_work_stealing()
122 .with_work_stealing_params(3, std::chrono::microseconds{50})
125 std::cout <<
"Work stealing enabled: " << (config.pool.enable_work_stealing ?
"yes" :
"no")
127 std::cout <<
"Max steal attempts: " << config.pool.max_steal_attempts <<
"\n";
128 std::cout <<
"Steal backoff: " << config.pool.steal_backoff.count() <<
"Ξs\n";
136 void example_priority_aging_config()
138 std::cout <<
"\n=== Example 6: Priority Aging Configuration ===\n";
141 .with_worker_count(4)
142 .enable_priority_aging()
143 .with_priority_aging_params(std::chrono::seconds{1}, 1, 3)
146 std::cout <<
"Priority aging enabled: "
147 << (config.scaling.priority_aging.enabled ?
"yes" :
"no") <<
"\n";
148 std::cout <<
"Aging interval: " << config.scaling.priority_aging.aging_interval.count()
150 std::cout <<
"Boost per interval: "
151 << config.scaling.priority_aging.priority_boost_per_interval <<
"\n";
152 std::cout <<
"Max boost: " << config.scaling.priority_aging.max_priority_boost <<
"\n";
160 void example_dag_config()
162 std::cout <<
"\n=== Example 7: DAG Configuration ===\n";
165 .with_worker_count(4)
167 .with_dag_retry_params(3, std::chrono::milliseconds{1000})
170 std::cout <<
"DAG failure policy: "
173 std::cout <<
"Max retries: " << config.dag.max_retries <<
"\n";
174 std::cout <<
"Retry delay: " << config.dag.retry_delay.count() <<
"ms\n";
175 std::cout <<
"Detect cycles: " << (config.dag.detect_cycles ?
"yes" :
"no") <<
"\n";
176 std::cout <<
"Execute in parallel: " << (config.dag.execute_in_parallel ?
"yes" :
"no")
185 void example_production_config()
187 std::cout <<
"\n=== Example 8: Production Configuration ===\n";
190 .with_worker_count(std::thread::hardware_concurrency())
191 .with_queue_capacity(10000)
192 .enable_backpressure()
194 .with_watermarks(0.6, 0.85)
195 .enable_circuit_breaker()
196 .with_failure_threshold(10)
197 .with_open_duration(std::chrono::seconds{60})
199 .with_work_stealing_params(5, std::chrono::microseconds{100})
200 .enable_priority_aging()
201 .with_priority_aging_params(std::chrono::seconds{2}, 1, 5)
205 std::cout <<
"Worker count: " << config.pool.worker_count <<
"\n";
206 std::cout <<
"Queue capacity: " << config.pool.queue_capacity <<
"\n";
207 std::cout <<
"Backpressure: adaptive (low=" << config.pool.backpressure.low_watermark
208 <<
", high=" << config.pool.backpressure.high_watermark <<
")\n";
209 std::cout <<
"Circuit breaker: threshold=" << config.resilience.circuit_breaker.failure_threshold
210 <<
", open_duration=" << config.resilience.circuit_breaker.timeout.count()
212 std::cout <<
"Work stealing: enabled, max_attempts=" << config.pool.max_steal_attempts
214 std::cout <<
"Priority aging: enabled, interval="
215 << config.scaling.priority_aging.aging_interval.count() <<
"ms\n";
216 std::cout <<
"DAG failure policy: "
219 std::cout <<
"Configuration is valid: " << (config.is_valid() ?
"yes" :
"no") <<
"\n";
227 void example_direct_initialization()
229 std::cout <<
"\n=== Example 9: Direct Initialization ===\n";
240 std::cout <<
"Backpressure policy: "
243 std::cout <<
"Circuit breaker threshold: "
245 std::cout <<
"Priority aging enabled: "
252 std::cout <<
"========================================\n";
253 std::cout <<
"Thread System Configuration Examples\n";
254 std::cout <<
"========================================\n";
256 example_default_config();
257 example_builder_basic();
258 example_backpressure_config();
259 example_circuit_breaker_config();
260 example_work_stealing_config();
261 example_priority_aging_config();
262 example_dag_config();
263 example_production_config();
264 example_direct_initialization();
266 std::cout <<
"\n========================================\n";
267 std::cout <<
"All examples completed successfully!\n";
268 std::cout <<
"========================================\n";
@ adaptive
Automatically adjust based on load conditions.
@ drop_oldest
Drop the oldest job when full to make room.
constexpr bool enable_work_stealing
auto dag_failure_policy_to_string(dag_failure_policy policy) -> std::string
Convert dag_failure_policy to string representation.
auto backpressure_policy_to_string(backpressure_policy policy) -> std::string
Converts backpressure_policy to human-readable string.
@ retry
Retry failed job (with max retries)
@ continue_others
Continue unrelated jobs, skip dependents.
backpressure_policy policy
The backpressure policy to use.
bool enabled
Whether priority aging is enabled.
std::size_t worker_count
Number of worker threads in the pool.
backpressure_config backpressure
Backpressure configuration.
std::size_t queue_capacity
Maximum number of jobs in the queue.
circuit_breaker_config circuit_breaker
Circuit breaker configuration.
priority_aging_config priority_aging
Priority aging configuration.
Unified configuration for thread_system.
struct kcenon::thread::thread_system_config::scaling_config scaling
static auto builder() -> config_builder
Creates a builder for fluent configuration.
struct kcenon::thread::thread_system_config::resilience_config resilience
struct kcenon::thread::thread_system_config::pool_config pool
Public facade for thread_system configuration.