gpt4 book ai didi

c++ - 数百个空闲线程的影响

转载 作者:IT王子 更新时间:2023-10-29 00:18:17 26 4
gpt4 key购买 nike

我正在考虑使用可能有数百个线程来实现通过网络管理设备的任务。

这是一个在带有 linux 内核的 powerpc 处理器上运行的 C++ 应用程序。

在每个任务做同步将数据从设备复制到任务的初始阶段后,任务变为空闲,并且只有在收到警报或需要更改某些数据(配置)时才会醒来,这种情况很少见在开始阶段之后。一旦所有任务都进入“空闲”阶段,我预计每秒只有几个任务需要唤醒。

所以,我主要担心的是,如果我有数百个线程,一旦它们空闲了,它们会对系统产生负面影响吗?

谢谢。阿姆索

编辑:
我正在根据得到的答案更新问题。多谢你们。因此,似乎有大量线程空闲(IO 阻塞、等待、休眠等),本身 不会对系统的响应能力产生影响。当然,他们会为每个线程的堆栈和 TLS 数据花费额外的钱,但只要我们在这件事上投入更多的内存就可以了(让它更多 €€€)

但是,必须考虑其他问题。由于需要等待队列或其他类似资源,让数百个线程等待可能会增加内核的内存使用量。还有一个延迟问题,看起来是不确定的。要检查每个解决方案的响应能力和内存使用情况,应该对其进行测量和比较。

最后,数百个大部分处于空闲状态的线程的整个想法可以像线程池一样建模。这降低了一点代码线性度,但显着提高了解决方案的可扩展性,并且可以通过适当的关注轻松调整以调整性能和资源使用之间的折衷。

我想这就是全部。感谢大家的意见。

--
阿姆索

最佳答案

每个线程都有开销——最重要的是每个线程都有自己的堆栈和 TLS。性能不是什么大问题,因为除非他们实际做任何事情,否则他们不会获得任何时间片。您可能仍要考虑使用线程池。

关于c++ - 数百个空闲线程的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4088892/

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