提问人:bobah 提问时间:10/10/2017 更新时间:10/10/2017 访问量:58
为什么要使用自动收缩的线程池?
Why would one use an automatically shrinking thread pool?
问:
我发现动态收缩功能通常已经过时,我能想到的所有原因(1 MB 的堆栈大小,或额外的文件描述符,微小的额外操作系统调度开销)似乎都无法抵消延迟开销懒惰地启动新线程。
自动收缩(基于超时)线程池(x86_64硬件上的 Posix 线程)的最佳用例是什么,以证明它仍然是一种可用的模式?
答:
1赞
neuhaus
10/10/2017
#1
收缩线程池将释放资源(主要是 RAM),然后这些资源将可用于在同一台计算机上运行的其他进程,也可能在同一硬件上运行的不同 VM 上运行。RAM 还可用于通过缓存加快速度。
另请参阅:
一般而言,共识似乎是,如果这是一个短期任务,线程池将提供性能优势。对于生存期较长的线程,它就不那么重要了。
评论
0赞
bobah
10/10/2017
您能否详细说明一下:什么是RAM(除了1MB的堆栈)并澄清您所说的泄漏堆栈内存的含义(我认为原则上是不可能的)。
0赞
neuhaus
10/10/2017
线程可能很大,线程数量越少,占用的内存就越少。你对堆栈的看法是对的,很难泄露:)
0赞
bobah
10/10/2017
停放在池中的线程的 RAM 占用空间仅为 1 MB 的堆栈,仅此而已。
评论