9#if HI_OPERATING_SYSTEM == HI_OS_WINDOWS
19namespace hi::inline v1 {
21#if HI_OPERATING_SYSTEM == HI_OS_WINDOWS
23#elif HI_OPERATING_SYSTEM == HI_OS_LINUX || HI_OPERATING_SYSTEM == HI_OS_MACOS
24constexpr std::size_t maximum_num_cpus = CPU_SETSIZE;
27#if HI_OPERATING_SYSTEM == HI_OS_WINDOWS
28using thread_id = uint32_t;
30using thread_id = uint64_t;
33inline thread_local thread_id current_thread_id_dummy = 0;
39[[nodiscard]]
inline thread_id current_thread_id() noexcept
41#if HI_OPERATING_SYSTEM == HI_OS_WINDOWS
43 constexpr uint64_t NT_TIB_CurrentThreadID = 0x48;
44 return __readgsdword(NT_TIB_CurrentThreadID);
47 return reinterpret_cast<uint64_t
>(¤t_thread_id_dummy);
57void set_thread_name(std::string_view name)
noexcept;
68[[nodiscard]]
std::string get_thread_name(thread_id
id)
noexcept;
86std::vector<
bool> set_thread_affinity_mask(
std::vector<
bool> const &mask);
97std::vector<
bool> set_thread_affinity(
std::
size_t cpu_id);
108std::
size_t advance_thread_affinity(
std::
size_t &cpu) noexcept;
114[[nodiscard]]
std::
size_t current_cpu_id() noexcept;
This file includes required definitions.
Functions and macros for handling architectural difference between compilers, CPUs and operating syst...