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();