什么是 std::thread::hardware_concurrency 返回?

Posted

技术标签:

【中文标题】什么是 std::thread::hardware_concurrency 返回?【英文标题】:What is std::thread::hardware_concurrency returns? 【发布时间】:2020-03-20 12:14:12 【问题描述】:

我在阅读 C++ Concurrency in Action 时正在尝试使用我的 mach 笔记本电脑,第一个示例是使用 std::thread::hardware_concurrency() 识别实际硬件线程的数量,它在我的机器上返回 8。 但是在打印std::thread::hardware_concurrency()之前,我已经做了一个类型并打印了std::thread::hardware_concurrency,即00B61410

那么std::thread::hardware_concurrency() and std::thread::hardware_concurrency 有什么区别呢?后面的标识是什么?

【问题讨论】:

你是如何打印std::thread::hardware_concurrency的? std::thread::hardware_concurrency 是一个函数,所以只有它的返回值才有意义。 std::cout 【参考方案1】:

std::thread::hardware_concurrency()std::thread的静态成员函数

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

所以你得到的8 是你的“最大并发线程数”。

当你这样做时

std::cout << std::thread::hardware_concurrency << std::endl;

您正在打印函数的地址。你得到的值基本上是没有意义的,除非你想把那个函数指针传递给别的东西。

【讨论】:

以上是关于什么是 std::thread::hardware_concurrency 返回?的主要内容,如果未能解决你的问题,请参考以下文章

thread::hardware_concurrency() 作为模板参数

仅移动类型的 back_inserter

获取硬件支持的线程数

令人困惑的 websocket tls 功能

C++11多线程笔记

什么是帧数?什么是FPS?什么是PING?什么是延迟?什么是延时?什么是延迟时间?什么是时延?.