【发布时间】:2013-05-06 15:16:27
【问题描述】:
有没有办法为 ITK (3.20.1) 线程设置处理器关联。我正在研究具有“SetGlobalDefaultNumberOfThreads”的 ITK::MultiThreader 类。但我没有找到任何关于亲和力的函数/方法。
任何帮助将不胜感激..
【问题讨论】:
标签: c++ linux multithreading itk
有没有办法为 ITK (3.20.1) 线程设置处理器关联。我正在研究具有“SetGlobalDefaultNumberOfThreads”的 ITK::MultiThreader 类。但我没有找到任何关于亲和力的函数/方法。
任何帮助将不胜感激..
【问题讨论】:
标签: c++ linux multithreading itk
在我安装的版本(3.18)中,好像不支持这个功能。但是,查看MultiThreader 头文件,我注意到实现依赖于本机操作系统线程机制。这意味着在 linux 上,实际上产生了 pthread,pthread_t 直接用于ThreadProcessIdType,这意味着您也许可以使用 linux 专有扩展来实现核心亲和力。
从this answer 引用我自己到另一个问题:
不幸的是,posix 线程 API 没有提供为线程设置 cpu 亲和性的方法。您可以使用 linux 平台上提供的不可移植扩展
pthread_attr_setaffinity_np,以及cpuset系列函数来配置线程亲和性。
由于线程已经在运行,您需要先获取线程属性,然后才能设置其亲和性。 Linux 为此提供了另一种不可移植的功能:pthread_getattr_np。
此外,cpuset 功能必须内置在内核中,但是在大多数支持多核的平台上应该是这种情况。
参考:
【讨论】: