1 #ifndef LIBJMMCG_CORE_JTHREAD_HPP
2 #define LIBJMMCG_CORE_JTHREAD_HPP
33 struct jthread
final :
public std::thread {
34 using base_t=
std::thread;
36 using thread_traits=
typename os_traits::thread_traits;
41 void operator=(jthread &&)
noexcept(
true);
43 void __fastcall kernel_priority(
const typename thread_traits::api_params_type::priority_type priority)
noexcept(
false);
44 void __fastcall kernel_affinity(
const typename thread_traits::api_params_type::processor_mask_type &mask)
noexcept(
false);
45 void __fastcall set_name(
char const *name)
noexcept(
false);
52 if (base_t::joinable()) {
58 jthread::
operator=(jthread &&t)
noexcept(
true) {
59 base_t::operator=(
std::move(t));
63 jthread::
kernel_priority(
const typename thread_traits::api_params_type::priority_type priority)
noexcept(
false) {
64 thread_traits::set_kernel_priority(native_handle(), priority);
68 jthread::
kernel_affinity(
const typename thread_traits::api_params_type::processor_mask_type &mask)
noexcept(
false) {
69 thread_traits::set_kernel_affinity(native_handle(), mask);
73 jthread::
set_name(
char const *name)
noexcept(
false) {
74 thread_traits::set_name(native_handle(), name);
79 return base_t::joinable();