gpt4 book ai didi

C++ 作业队列 : Is there a rule of thumb for the number of worker threads?

转载 作者:太空狗 更新时间:2023-10-29 21:07:49 26 4
gpt4 key购买 nike

我刚刚在 C++ 中实现了第一个简单的多线程作业队列,我认为(并读到)为每个硬件线程使用一个工作线程是个好主意(在我的例子中是 4 个)。基本上,我的应用程序现在只是(同时)从 Internet 加载大量图像,我注意到如果我将工作线程的数量从 4 个增加到 8 个甚至 16 个,速度会大大提高。

对于在这样的作业队列中使用多少个线程,是否有一般规则?我的猜测是,如果我每帧都创建新作业,并且工作线程每帧都有恒定的工作量,那么 4 会是一个更大的数字,而如果我想一次处理很多东西(比如加载 50 张左右的图像)更多的线程可以大大加快速度。不过,对于不同情况下的正确数字是否有经验法则?

谢谢

最佳答案

理想的工作线程数等于系统中的 CPU 内核数。然而,实际上这是次优的,因为有时任务会阻塞网络、磁盘 I/O 等,导致利用率不足。这听起来像是这里正在发生的事情。

线程池通常会“过度调度”以对此进行补偿。有时,内核支持在线程阻塞时通知您,因此您知道启动另一个线程(Win32 中的完成端口)并仍然达到事件工作线程的最佳数量。

关于C++ 作业队列 : Is there a rule of thumb for the number of worker threads?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4350889/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com