首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >unix系统的SetThreadAffinityMask

unix系统的SetThreadAffinityMask
EN

Stack Overflow用户
提问于 2011-05-14 09:37:18
回答 1查看 1.7K关注 0票数 2

我希望防止一个线程在多个内核上执行,我不希望当某个线程在一个内核上执行时,它不应该被安排在另一个内核上执行。

我使用x86指令RDTSC来生成时间戳。当从不同的CPU核调用此指令时,可能会使用不同的时间戳计数器,而且由于不同的计数器不是通过CPU核同步的,因此可能会出现不一致的结果。

在windows上有一个函数强制执行此行为:

代码语言:javascript
复制
DWORD_PTR WINAPI SetThreadAffinityMask(
  __in  HANDLE hThread,
  __in  DWORD_PTR dwThreadAffinityMask
);

为指定的线程设置处理器关联掩码。

MSDN链路

unix系统有类似的东西吗?

EN

回答 1

Stack Overflow用户

发布于 2011-05-14 09:46:46

Linux2.5.8及更高版本有集亲和力()。它通常用于进程级,但也适用于线程:

关联掩码实际上是一个每个线程属性,可以独立地对线程组中的每个线程进行调整。调用gettid(2)返回的值可以在参数pid中传递。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6000978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档