当我cout
std::thread::hardware_concurrency
时,它会给出1。
但是来自cppreference
返回支持的并发线程数 实现。该值应仅被视为提示。
在我的系统上实现线程是否有用,如果目标只是我的系统?
答案 0 :(得分:1)
正如cppreference page所说,它的价值应该只被视为提示。请注意,只有当实际上无法计算实现中可用线程的值时,它才应返回0。 1 可能是您的应用程序的实际可用线程数。
不幸的是,找出是否值得为您的应用程序设置线程的唯一真实和好方法是实际实现线程并对您的应用程序进行基准测试。根据您的应用程序工作负载和应用程序中的线程实现,您可能会看到无变化,性能下降或性能提升。
在实施/考虑应用程序中的多线程之前,请务必考虑以下问题:
答案 1 :(得分:1)
也许你已经忘记了括号!
cout<<的std ::螺纹:: hardware_concurrency;
我的机器上的报告总是“1”,但
cout<<的std ::螺纹:: hardware_concurrency();
报告正确的核心数量。