Common System 0.2.0
Common interfaces and patterns for system integration
Loading...
Searching...
No Matches
thread_pool_interface.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
14#pragma once
15
16#include "executor_interface.h"
17#include "../patterns/result.h"
18#include <cstddef>
19
20namespace kcenon::common {
21namespace interfaces {
22
31class IThreadPool : public IExecutor {
32public:
33 virtual ~IThreadPool() = default;
34
35 // ===== Thread pool sizing =====
36
47 virtual VoidResult resize(size_t new_size) = 0;
48
53 virtual size_t min_workers() const { return 1; }
54
59 virtual size_t max_workers() const { return 0; }
60
61 // ===== Queue management =====
62
68 virtual VoidResult set_queue_capacity(size_t capacity) = 0;
69
74 virtual size_t get_queue_capacity() const = 0;
75
80 virtual bool is_queue_full() const = 0;
81
89 virtual size_t clear_pending_tasks() = 0;
90
91 // ===== Lifecycle control =====
92
99 virtual VoidResult start() = 0;
100
108 virtual VoidResult stop(bool wait_for_completion = true) = 0;
109
119 virtual VoidResult pause() = 0;
120
125 virtual VoidResult resume() = 0;
126
131 virtual bool is_paused() const = 0;
132
133 // ===== Statistics =====
134
139 virtual size_t active_tasks() const = 0;
140
145 virtual size_t idle_workers() const = 0;
146
151 virtual size_t completed_tasks() const { return 0; }
152
157 virtual size_t failed_tasks() const { return 0; }
158};
159
163using ThreadPoolFactory = std::function<std::shared_ptr<IThreadPool>(size_t worker_count)>;
164
170public:
171 virtual ~IThreadPoolProvider() = default;
172
177 virtual std::shared_ptr<IThreadPool> get_thread_pool() = 0;
178
186 size_t worker_count,
187 size_t queue_capacity = 0) = 0;
188};
189
190} // namespace interfaces
191} // namespace kcenon::common
Result type for error handling with member function support.
Definition core.cppm:165
Interface for modules that provide thread pool implementations.
virtual Result< std::shared_ptr< IThreadPool > > create_thread_pool(size_t worker_count, size_t queue_capacity=0)=0
Create a new thread pool with specific configuration.
virtual std::shared_ptr< IThreadPool > get_thread_pool()=0
Get the default thread pool instance.
virtual bool is_queue_full() const =0
Check if the queue is full.
virtual VoidResult resume()=0
Resume task processing.
virtual size_t completed_tasks() const
Get total number of completed tasks.
virtual size_t idle_workers() const =0
Get the number of idle workers.
virtual size_t active_tasks() const =0
Get the number of active (executing) tasks.
virtual size_t clear_pending_tasks()=0
Clear all pending tasks.
virtual size_t min_workers() const
Get the minimum number of worker threads.
virtual size_t failed_tasks() const
Get total number of failed tasks.
virtual VoidResult stop(bool wait_for_completion=true)=0
Stop the thread pool.
virtual size_t get_queue_capacity() const =0
Get the current queue capacity.
virtual VoidResult start()=0
Start the thread pool.
virtual size_t max_workers() const
Get the maximum number of worker threads.
virtual VoidResult pause()=0
Pause task processing.
virtual VoidResult set_queue_capacity(size_t capacity)=0
Set the maximum queue capacity.
virtual VoidResult resize(size_t new_size)=0
Resize the thread pool.
virtual bool is_paused() const =0
Check if the pool is paused.
Executor interfaces for task submission and management.
std::function< std::shared_ptr< IThreadPool >(size_t worker_count)> ThreadPoolFactory
Factory function type for creating thread pool instances.
Core interfaces.
Definition adapter.h:21
Umbrella header for Result<T> type and related utilities.