0

有没有办法为 ITK (3.20.1) 线程设置处理器亲和性。我正在研究具有“SetGlobalDefaultNumberOfThreads”的 ITK::MultiThreader 类。但我没有找到任何关于亲和力的函数/方法。

任何帮助,将不胜感激..

4

1 回答 1

1

在我安装的版本(3.18)中,似乎不支持此功能。但是,查看MultiThreader头文件,我注意到实现依赖于本机 OS 线程机制。这意味着在 linux 上,实际上产生了 pthread,并pthread_t直接用于ThreadProcessIdType,这意味着您可以使用 linux 专有扩展来实现核心亲和力。

从这个答案引用我自己到另一个问题:

不幸的是,posix 线程 API 没有提供为线程设置 cpu 亲和性的方法。您可以使用 linux 平台上提供的不可移植的扩展pthread_attr_setaffinity_np,以及cpuset一系列函数来配置线程亲和性。

由于线程已经在运行,因此您需要先获取线程属性,然后才能设置其亲和性。Linux 为此提供了另一种不可移植的功能:pthread_getattr_np.

此外,该cpuset功能必须在内核中构建,但是在大多数支持多核的平台上应该是这种情况。

参考:

于 2013-05-06T17:02:38.483 回答