是否有必要显式地限制线程的数量
is it necessary to explicitly limit the number of threads
在运行多线程应用程序时,是否需要显式指定应用程序使用的最大线程数,或者Linux将自行管理它?如果Linux自己处理它,我希望它是"社会化的",从CPU在所有用户之间分配的意义上说。但也许我错了?
有些系统有系统可以处理的最大线程数,但大多数系统只是在内存耗尽之前就耗尽了(某种类型的)。
如果你的线程"没有做太多的事情",那么你可以想要多少就有多少(尽管处理几千个线程可能会导致运行速度变慢,因为系统必须不时地"遍走"系统中的每个线程)。如果线程的计算量很大,那么为系统中的其他进程留下一些空闲的CPU容量是"不错的"。
所以,它真的不是一成不变的,而是取决于你想要达到的目标。当然,整个系统的目的是什么——如果你的任务是为宝马的一辆新车建模空气动力学,那么使用99.999%的CPU来进行空气动力学计算是完全没问题的。如果机器是专用的web服务器,使用99.99%的CPU来服务web页面也是完全可以的。如果这是某人用来浏览网页、写邮件和编译代码的台式电脑,那么使用99.99%的可用CPU对他们的音乐收藏进行傅里叶变换以检查重复歌曲可能不是一个理想的解决方案。
程序本身决定启动多少线程,而不是操作系统。至于进程启动太多线程时会发生什么,这取决于调度器。
相关文章:
- 如何检查线程是否锁定
- 并发/多线程:是否可以以这种方式生成相同的输出?
- 当我在C++中调用 struce 的只读静态成员时,线程是否安全
- 检查分离的线程是否还活着?
- 将正常函数的工作分配给多个线程是否安全
- 最大线程数 - 如何确定C++线程是否并行运行?
- 如何确定其他线程是否正在运行?
- 线程是否真的在调用 std::future::get() 后启动
- 如何知道分离的STD ::线程是否完成了执行
- 通知线程是否始终需要在修改期间锁定共享数据
- 只写到共享 std::unordered_map 线程是否安全
- 检查线程是否在 c++11 中完成
- C++ 互斥 - 检查另一个线程是否正在等待
- 提升::作用域的线程是否自动分离
- 以下单例实现线程是否安全?
- 确定线程是否已退出
- 我的不同线程是否会看到更新后的shared_ptr对象
- 使用操作当前对象的线程是否安全
- 此同步对象实现线程是否安全
- 线程是否共享一些类字段