【问题标题】:thread::hardware_concurrency() checking returns zero valuethread::hardware_concurrency() 检查返回零值
【发布时间】:2016-05-03 09:42:42
【问题描述】:

我正在使用 RHEL 6 64 位并在四核处理器上的虚拟机上运行。我编写了以下程序来检查硬件可以处理的线程数。

#include <thread>
#include <iostream>

using namespace std;

int main()
{
    cout << thread::hardware_concurrency() << endl;
    return 0;
}

结果总是零,这是什么原因?

【问题讨论】:

    标签: c++ multithreading threadpool


    【解决方案1】:

    来自cppreference:

    返回支持的并发线程数 执行。该值应仅被视为一个提示。

    还有:

    返回值

    支持的并发线程数。如果价值不好 已定义或不可计算,返回​0​。

    所以thread::hardware_concurrency() 不必给你任何准确的信息。
    “准确”也在旁观者的眼中。如果我有两个支持超线程的内核,hardware_concurrency 应该返回2 还是4?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      • 2016-10-05
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多