[C/C++11]_[初级]_[获取CPU支持的最合适的核心线程数]

本文介绍了如何在C/C++11中获取CPU支持的最合适的核心线程数,这对于实现线程池至关重要。标准库提供了获取硬件并发性的方法,通过std::thread::hardware_concurrency可以获取核心数。如果编译器不支持,可以使用GetSystemInfo函数作为替代方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景

  1. 当使用线程池时,一般需要获取最合适的最大线程数,因为在每个进程每个CPU核心最高性能是只处理一个线程。因此可见最合适的线程总数就是CPU核心数。那么如何获取CPU核心数?

说明

  1. 很遗憾,C++标准还没有线程池,要么自己开发,要么使用第三方库。

  2. 获取CPU核心数,在C++11里已经支持获取CPU支持的最合适的核心线程数,通过<thread>的类静态方法获得thread::hardware_concurrency()[2].

    Static. Returns an estimate of the number of hardware thread contexts.
    
  3. 如果编译器没有<thread>库,在Windows上可以通过Win32函数GetSystemInfo(LPSYSTEM_INFO)获得.

例子

  1. 使用VS2017以上编译运行。
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白行微

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值