|
ThreadSchedule 3.0.0
Modern C++ thread management library
|
Polymorphic base providing common thread management operations. More...
#include <thread_backend.hpp>
Public Types | |
| using | native_handle_type = typename ThreadType::native_handle_type |
| using | id = typename ThreadType::id |
Public Member Functions | |
| basic_thread_backend ()=default | |
| basic_thread_backend (ThreadType &t) | |
| basic_thread_backend (ThreadType &t, native_thread_id tid) | |
| virtual | ~basic_thread_backend ()=default |
| void | join () |
| void | detach () |
| auto | joinable () const noexcept -> bool |
| auto | get_id () const noexcept -> id |
| auto | native_handle () noexcept -> native_handle_type |
| auto | set_name (std::string const &name) -> expected< void, std::error_code > |
| auto | get_name () const -> expected< std::string, std::error_code > |
| auto | set_priority (native_thread_priority priority) -> expected< void, std::error_code > |
| auto | set_scheduling_policy (native_scheduling_policy policy, native_thread_priority priority) -> expected< void, std::error_code > |
| auto | configure (native_scheduling_config const &config) -> expected< void, std::error_code > |
| auto | set_nice_value (int nice_value) -> expected< void, std::error_code > |
| auto | get_nice_value () const -> expected< int, std::error_code > |
| auto | configure (native_thread_config const &config) -> expected< void, std::error_code > |
| auto | set_affinity (native_thread_affinity const &affinity) -> expected< void, std::error_code > |
| auto | get_affinity () const -> expected< native_thread_affinity, std::error_code > |
| auto | native_id () const noexcept -> native_thread_id |
Protected Member Functions | |
| void | set_native_id (native_thread_id tid) noexcept |
Static Protected Member Functions | |
| static auto | no_such_thread () -> unexpected< std::error_code > |
Protected Attributes | |
| native_thread_id | native_id_ {} |
Polymorphic base providing common thread management operations.
| ThreadType | The underlying thread type (std::thread or std::jthread). |
| OwnershipTag | detail::owning_tag (default) or detail::non_owning_tag. |
Provides a uniform interface for join, detach, naming, priority, affinity, scheduling policy, and nice-value control on top of any standard thread type. Derived classes (thread_backend and thread_view_backend) customize ownership semantics while inheriting all of these operations.
pthread_setname_np; names are limited to 15 characters (returns errc::invalid_argument if exceeded).SetThreadDescription from Kernel32.dll or KernelBase.dll. Names may be longer. Returns errc::function_not_supported if the API is unavailable (pre-Windows 10 1607).expected<std::string, std::error_code> so unavailable APIs, invalid handles, OS failures, and UTF conversion failures remain diagnosable.SCHED_OTHER and updates the thread's nice value. On Windows it maps to SetThreadPriority constants.pthread_setaffinity_np with cpu_set_t.SetThreadGroupAffinity (multi-processor-group aware) and falls back to SetThreadAffinityMask on single-group systems.setpriority(PRIO_PROCESS, tid, ...) using the captured kernel TID. On Windows, maps to SetThreadPriority / GetThreadPriority without changing the process priority class.set_* methods return expected<void, std::error_code>. Always check the return value; failures are silent unless inspected.Definition at line 255 of file thread_backend.hpp.
| using threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::id = typename ThreadType::id |
Definition at line 259 of file thread_backend.hpp.
| using threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_handle_type = typename ThreadType::native_handle_type |
Definition at line 258 of file thread_backend.hpp.
|
default |
|
inlineexplicit |
Definition at line 262 of file thread_backend.hpp.
|
inline |
Definition at line 263 of file thread_backend.hpp.
|
virtualdefault |
|
inline |
Definition at line 347 of file thread_backend.hpp.
References threadschedule::detail::apply_scheduling_config(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::joinable(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_handle(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_id_, and threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::no_such_thread().
Referenced by threadschedule::detail::thread_backend::create_with_config().
|
inline |
Definition at line 377 of file thread_backend.hpp.
References threadschedule::detail::configure_thread().
|
inline |
Definition at line 281 of file thread_backend.hpp.
References threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::joinable(), and threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_id_.
|
inline |
Definition at line 391 of file thread_backend.hpp.
References threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::joinable(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_handle(), and threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::no_such_thread().
Referenced by threadschedule::thread::get_affinity().
|
inlinenoexcept |
Definition at line 296 of file thread_backend.hpp.
Referenced by threadschedule::thread::get_id().
|
inline |
Definition at line 317 of file thread_backend.hpp.
References threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::joinable(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_handle(), and threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::no_such_thread().
Referenced by threadschedule::thread::get_name().
|
inline |
Definition at line 369 of file thread_backend.hpp.
References threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::joinable(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_handle(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_id_, threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::no_such_thread(), and threadschedule::detail::read_effective_nice().
Referenced by threadschedule::thread::get_nice(), and threadschedule::thread::get_priority().
|
inline |
Definition at line 271 of file thread_backend.hpp.
References threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::joinable(), and threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_id_.
Referenced by threadschedule::detail::thread_backend::operator=(), and threadschedule::detail::scheduled_pool_backend_base< PoolType >::shutdown().
|
inlinenoexcept |
Definition at line 291 of file thread_backend.hpp.
Referenced by threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::configure(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::detach(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::get_affinity(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::get_name(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::get_nice_value(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::join(), threadschedule::thread::joinable(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_handle(), threadschedule::detail::scheduled_pool_backend_base< PoolType >::scheduler_thread_info(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::set_affinity(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::set_name(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::set_nice_value(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::set_priority(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::set_scheduling_policy(), and threadschedule::detail::scheduled_pool_backend_base< PoolType >::shutdown().
|
inlinenoexcept |
Definition at line 301 of file thread_backend.hpp.
References threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::joinable().
Referenced by threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::configure(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::get_affinity(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::get_name(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::get_nice_value(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::set_affinity(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::set_name(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::set_nice_value(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::set_priority(), and threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::set_scheduling_policy().
|
inlinenoexcept |
Definition at line 399 of file thread_backend.hpp.
References threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_id_.
|
inlinestaticprotected |
Definition at line 406 of file thread_backend.hpp.
Referenced by threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::configure(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::get_affinity(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::get_name(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::get_nice_value(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::set_affinity(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::set_name(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::set_nice_value(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::set_priority(), and threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::set_scheduling_policy().
|
inline |
Definition at line 383 of file thread_backend.hpp.
References threadschedule::detail::apply_affinity_checked(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::joinable(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_handle(), and threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::no_such_thread().
|
inline |
Definition at line 309 of file thread_backend.hpp.
References threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::joinable(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_handle(), and threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::no_such_thread().
Referenced by threadschedule::detail::thread_backend::create_with_config(), and threadschedule::thread::set_name().
|
inlineprotectednoexcept |
Definition at line 412 of file thread_backend.hpp.
References threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_id_.
|
inline |
Definition at line 355 of file thread_backend.hpp.
References threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::joinable(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_handle(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_id_, and threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::no_such_thread().
|
inline |
Definition at line 325 of file thread_backend.hpp.
References threadschedule::detail::apply_scheduling_config(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::joinable(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_handle(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_id_, threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::no_such_thread(), and threadschedule::detail::native_schedule::posix_nice().
|
inline |
Definition at line 338 of file thread_backend.hpp.
References threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::joinable(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_handle(), and threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::no_such_thread().
Referenced by threadschedule::detail::thread_backend::create_with_config().
|
protected |
Definition at line 420 of file thread_backend.hpp.
Referenced by threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::configure(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::detach(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::get_nice_value(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::join(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::native_id(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::set_native_id(), threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::set_nice_value(), and threadschedule::detail::basic_thread_backend< ThreadType, OwnershipTag >::set_priority().