【问题标题】:is it necessary to explicitly limit the number of threads是否需要明确限制线程数
【发布时间】:2013-04-25 13:15:14
【问题描述】:

在运行多线程应用程序时,是否需要明确指定应用程序使用的最大线程数,还是 Linux 会自行管理?如果 Linux 自己处理它,我希望它是“社交的”,即 CPU 在所有用户之间分配。但也许我错了?

【问题讨论】:

    标签: c++ linux parallel-processing


    【解决方案1】:

    某些系统具有系统可以处理的最大线程数,但大多数系统只是在此之前[某种]内存不足。

    如果您的线程“没有做太多”,那么您可以拥有任意数量的线程(尽管处理数千个线程可能会导致运行速度变慢,因为系统会时不时地“行走”系统中的每个线程)。如果您的线程的计算量很大,那么系统中的其他进程为这些进程留下一些空闲的 CPU 容量是“很好的”。

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

    【讨论】:

    • 其实对于CPU使用率来说,一般是可以的。我发现我的机器遇到的问题是内存过度使用 [虽然它只是一个“单用户”机器,但我经常同时运行多个应用程序,例如一些长时间运行的计算以及同时进行编译和 Web 浏览会话]。当我运行一些占用大量内存的东西时,我会得到“无响应”的系统。但总而言之,系统将(尝试)在用户之间公平地共享可用资源。
    【解决方案2】:

    程序本身决定了它启动了多少线程,而不是操作系统。至于进程启动过多线程会发生什么,那就看scheduler了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-14
      • 2019-07-11
      • 1970-01-01
      • 2014-10-23
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多