C++11 std::thread 和 native_handle()

问题描述 投票:0回答:1

这是创建线程并使用

std::thread
设置亲和力的正确方法吗?

std::thread myThread(threadFunction);

HANDLE threadHandle = myThread.native_handle();

SetThreadAffinityMask(threadHandle, 1);

// Join the thread
myThread.join();
c++ windows multithreading c++11
1个回答
1
投票

是的,这是正确的。

如果您想在某个时候将其设置回原始状态,

SetThreadAffinityMask
还会返回旧掩码:

HANDLE threadHandle = myThread.native_handle();

DWORD_PTR new_mask = 1;
DWORD_PTR old_mask = SetThreadAffinityMask(threadHandle, new_mask);

如果

old_mask
为零,则设置亲和力失败。

© www.soinside.com 2019 - 2024. All rights reserved.