8#include "architecture.hpp"
9#if TT_OPERATING_SYSTEM == TT_OS_WINDOWS
27void set_thread_name(std::string_view name);
29#if TT_OPERATING_SYSTEM == TT_OS_WINDOWS
30constexpr size_t maximum_num_cpus = 64;
31#elif TT_OPERATING_SYSTEM == TT_OS_LINUX || TT_OPERATING_SYSTEM == TT_OS_MACOS
32constexpr size_t maximum_num_cpus = CPU_SETSIZE;
35#if TT_OPERATING_SYSTEM == TT_OS_WINDOWS
36using thread_id = uint32_t;
38using thread_id = uint64_t;
41inline thread_local thread_id current_thread_id_dummy = 0;
47[[nodiscard]]
inline thread_id current_thread_id() noexcept
49#if TT_OPERATING_SYSTEM == TT_OS_WINDOWS
51 constexpr uint64_t NT_TIB_CurrentThreadID = 0x48;
52 return __readgsdword(NT_TIB_CurrentThreadID);
55 return reinterpret_cast<uint64_t
>(¤t_thread_id_dummy);
75std::vector<
bool> set_thread_affinity_mask(
std::vector<
bool> const &mask);
86std::vector<
bool> set_thread_affinity(
size_t cpu_id);
97size_t advance_thread_affinity(
size_t &cpu) noexcept;
103[[nodiscard]]
size_t current_cpu_id() noexcept;