是否有必要显式地限制线程的数量

is it necessary to explicitly limit the number of threads

本文关键字:线程 是否      更新时间:2023-10-16

在运行多线程应用程序时,是否需要显式指定应用程序使用的最大线程数,或者Linux将自行管理它?如果Linux自己处理它,我希望它是"社会化的",从CPU在所有用户之间分配的意义上说。但也许我错了?

有些系统有系统可以处理的最大线程数,但大多数系统只是在内存耗尽之前就耗尽了(某种类型的)。

如果你的线程"没有做太多的事情",那么你可以想要多少就有多少(尽管处理几千个线程可能会导致运行速度变慢,因为系统必须不时地"遍走"系统中的每个线程)。如果线程的计算量很大,那么为系统中的其他进程留下一些空闲的CPU容量是"不错的"。

所以,它真的不是一成不变的,而是取决于你想要达到的目标。当然,整个系统的目的是什么——如果你的任务是为宝马的一辆新车建模空气动力学,那么使用99.999%的CPU来进行空气动力学计算是完全没问题的。如果机器是专用的web服务器,使用99.99%的CPU来服务web页面也是完全可以的。如果这是某人用来浏览网页、写邮件和编译代码的台式电脑,那么使用99.99%的可用CPU对他们的音乐收藏进行傅里叶变换以检查重复歌曲可能不是一个理想的解决方案。

程序本身决定启动多少线程,而不是操作系统。至于进程启动太多线程时会发生什么,这取决于调度器。