gtopt::AdaptiveWorkPool class final

Default work pool using int64_t priority key with std::less semantics (smaller key → higher priority).

This is a concrete derived class so that class AdaptiveWorkPool; forward declarations in other headers remain valid.

Base classes

template<typename Key = int64_t, typename KeyCompare KeyCompare = std::less<Key>>
class BasicWorkPool<>
Adaptive thread pool with generic priority key.

Public types

using key_compare = KeyCompare
using key_type = Key
using Requirements = BasicTaskRequirements<Key>

Constructors, destructors, conversion operators

BasicWorkPool(BasicWorkPool&&) deleted
BasicWorkPool(const BasicWorkPool&) deleted
BasicWorkPool(WorkPoolConfig config = WorkPoolConfig {}) explicit

Public functions

auto format_statistics() const -> std::string noexcept
auto get_statistics() const -> Statistics noexcept
auto log_statistics() const -> void
auto shutdown() -> void
auto start() -> void
template<typename Func Func, typename... Args>
auto submit(Func&& func, const Requirements& req = Requirements(), Args && ... args) -> std::expected< std::future< std::invoke_result_t< Func, Args... > >, std::error_code > -> auto
template<typename Func Func>
auto submit_lambda(Func&& func, Requirements req = {}) -> auto