我希望防止一个线程在多个内核上执行,我不希望当某个线程在一个内核上执行时,它不应该被安排在另一个内核上执行。
我使用x86指令RDTSC来生成时间戳。当从不同的CPU核调用此指令时,可能会使用不同的时间戳计数器,而且由于不同的计数器不是通过CPU核同步的,因此可能会出现不一致的结果。
在windows上有一个函数强制执行此行为:
DWORD_PTR WINAPI SetThreadAffinityMask(
__in HANDLE hThread,
__in DWORD_PTR dwThreadAffinityMask
);为指定的线程设置处理器关联掩码。
MSDN链路
unix系统有类似的东西吗?
发布于 2011-05-14 09:46:46
Linux2.5.8及更高版本有集亲和力()。它通常用于进程级,但也适用于线程:
关联掩码实际上是一个每个线程属性,可以独立地对线程组中的每个线程进行调整。调用
gettid(2)返回的值可以在参数pid中传递。
https://stackoverflow.com/questions/6000978
复制相似问题