【问题标题】:Threading With Multiple Cores C++多核 C++ 线程
【发布时间】:2012-09-03 04:01:09
【问题描述】:

我不知道如何在 C++ 中进行线程化,而且我不仅不想知道这一点,而且有没有办法可以将线程强制到不同的内核上?另外我如何知道用户有多少个内核?

【问题讨论】:

  • 您不能强制线程在标准 C++ 中并行运行。那是在环境的底层线程调度程序(通常在内核中)。您所保证的只是并发
  • ...但是,无论如何,您应该尝试在 C++11 中使用 new thread library
  • 这真的是三个问题。最具体的,关于选择核心的,是asked before

标签: c++ multithreading


【解决方案1】:

将线程绑定到任意 CPU 称为设置亲和性。这是依赖于平台的操作。

对于 Windows:SetProcessAffinityMask

对于 pthread:pthread_attr_setaffinity_np(3)pthread_setaffinity_np(3)

对于 Boost,您可以使用 native_handle() 获取特定于平台的线程句柄,以便将它们与上述函数一起使用。

【讨论】:

  • ... 对; C++11 等效项是访问类似的thread::native_handle。虽然应该警告这是非标准的。
  • 请注意native_handle 函数是标准的。您从中得到的是“非标准”。
猜你喜欢
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-20
相关资源
最近更新 更多