多核 C++ 线程
Posted
技术标签:
【中文标题】多核 C++ 线程【英文标题】:Threading With Multiple Cores C++ 【发布时间】:2012-09-03 04:01:09 【问题描述】:我不知道如何在 C++ 中进行线程化,而且我不仅不想知道这一点,而且有没有办法可以将线程强制到不同的内核上?另外我如何知道用户有多少个内核?
【问题讨论】:
您不能强制线程在标准 C++ 中并行运行。那是在环境的底层线程调度程序(通常在内核中)。您所保证的只是并发。 ...但是,无论如何,您应该尝试在 C++11 中使用 newthread
library。
这真的是三个问题。最具体的,关于选择核心的,是asked before。
【参考方案1】:
将线程绑定到任意 CPU 称为设置亲和性。这是依赖于平台的操作。
对于 Windows:SetProcessAffinityMask
对于 pthread:pthread_attr_setaffinity_np(3)
和 pthread_setaffinity_np(3)
对于 Boost,您可以使用 native_handle()
获取特定于平台的线程句柄,以便将它们与上述函数一起使用。
【讨论】:
... 对; C++11 等效项是访问类似的thread::native_handle
。虽然应该警告这是非标准的。
请注意native_handle
函数是标准的。您从中得到的是“非标准”。以上是关于多核 C++ 线程的主要内容,如果未能解决你的问题,请参考以下文章