【发布时间】:2013-04-25 13:15:14
【问题描述】:
在运行多线程应用程序时,是否需要明确指定应用程序使用的最大线程数,还是 Linux 会自行管理?如果 Linux 自己处理它,我希望它是“社交的”,即 CPU 在所有用户之间分配。但也许我错了?
【问题讨论】:
标签: c++ linux parallel-processing
在运行多线程应用程序时,是否需要明确指定应用程序使用的最大线程数,还是 Linux 会自行管理?如果 Linux 自己处理它,我希望它是“社交的”,即 CPU 在所有用户之间分配。但也许我错了?
【问题讨论】:
标签: c++ linux parallel-processing
某些系统具有系统可以处理的最大线程数,但大多数系统只是在此之前[某种]内存不足。
如果您的线程“没有做太多”,那么您可以拥有任意数量的线程(尽管处理数千个线程可能会导致运行速度变慢,因为系统会时不时地“行走”系统中的每个线程)。如果您的线程的计算量很大,那么系统中的其他进程为这些进程留下一些空闲的 CPU 容量是“很好的”。
所以,这确实不是一成不变的事情,而是取决于您要达到的目标。当然,整个系统的用途是——如果您的任务是为 BMW 新车的空气动力学建模,那么使用 99.999% 的 CPU 进行空气动力学计算是非常好的。如果机器是专用的网络服务器,使用 99.99% 的 CPU 来提供网页也完全没问题。如果是某人的台式机用来浏览网页、写电子邮件和编译代码,那么使用 99.99% 的可用 CPU 来傅里叶变换他们的音乐收藏以检查重复歌曲可能不是一个理想的解决方案。
【讨论】:
程序本身决定了它启动了多少线程,而不是操作系统。至于进程启动过多线程会发生什么,那就看scheduler了。
【讨论】: