代码之家  ›  专栏  ›  技术社区  ›  eden sson

使用std::thread和native_handle()设置线程关联掩码

  •  0
  • eden sson  · 技术社区  · 9 月前

    这是创建线程并使用以下命令设置关联性的正确方法吗 std::thread ?

    std::thread myThread(threadFunction);
    
    HANDLE threadHandle = myThread.native_handle();
    
    SetThreadAffinityMask(threadHandle, 1);
    
    // Join the thread
    myThread.join();
    
    1 回复  |  直到 9 月前
        1
  •  1
  •   Ted Lyngmo    9 月前

    是的,没错。

    如果你想在某个时候将其设置回原始状态, SetThreadAffinityMask 也返回旧掩码:

    HANDLE threadHandle = myThread.native_handle();
    
    DWORD_PTR new_mask = 1;
    DWORD_PTR old_mask = SetThreadAffinityMask(threadHandle, new_mask);
    

    万一 old_mask 为零,设置关联性失败。