运行多线程应用程序时,是否需要显式指定用于应用程序的最大线程数,或者Linux是否自行管理它?如果Linux自己处理它,我会期望它是“社交的”,因为CPU在所有用户之间分配。但也许我对此错了?
答案 0 :(得分:4)
某些系统拥有系统可以处理的最大线程数,但大多数系统在此之前只是耗尽了[某种]内存。
如果你的线程“做得不多”,那么你可能拥有你想要的任意数量(尽管处理数千个线程可能会导致事情变得更慢,因为不时地,系统将不得不“走路”系统中的每个线程)。如果您的线程在计算等方面很重,那么系统中的其他进程为这些进程留下一些备用CPU容量会“很好”。
所以,它确实不是一成不变的,而是取决于你想要实现的目标。当然,整个系统的目的是什么 - 如果您的任务是为宝马的新车的空气动力学建模,那么使用99.999%的CPU进行空气动力学计算是完全没问题的。如果机器是专用的Web服务器,使用99.99%的CPU来提供网页也很正常。如果是他们用来浏览网页,编写电子邮件和编写代码的某人的台式机,那么使用99.99%的可用CPU来傅里叶变换他们的音乐集来检查重复的歌曲可能不是一个理想的解决方案。
答案 1 :(得分:1)
程序本身确定它启动的线程数,而不是操作系统。至于当一个进程启动太多线程时会发生什么,那就是scheduler。