【问题标题】:Why would one use an automatically shrinking thread pool?为什么要使用自动收缩的线程池?
【发布时间】:2017-10-10 11:13:56
【问题描述】:

我发现动态收缩功能通常已过时,我能想到的所有原因(1 MB 的堆栈大小,或额外的文件描述符,微小的额外操作系统调度开销)似乎都无法抵消启动新线程的延迟开销偷懒。

自动收缩(基于超时)线程池(x86_64 硬件上的 Posix 线程)的最佳用例是什么,以证明它仍然是可用的模式?

【问题讨论】:

  • 没有退休策略的池是内存泄漏。

标签: performance concurrency language-agnostic


【解决方案1】:

缩小线程池将释放资源(主要是 RAM),然后这些资源将可供在同一台计算机上运行的其他进程使用,或者可能在同一硬件上运行的不同 VM 上使用。 RAM 也可用于通过缓存加快速度。

另见:

一般来说,共识似乎是,如果这是一项短期任务,线程池将提供性能优势。对于寿命较长的线程,它的重要性会降低。

【讨论】:

  • 您能否详细说明一下:什么 RAM(除了 1MB 的堆栈)并澄清您所说的泄漏堆栈内存是什么意思(我认为原则上不可能)。
  • 线程可以很大,线程越少消耗的内存就越少。您对堆栈的看法是正确的,这很难泄漏:)
  • 停在池中的线​​程的 RAM 占用量仅为 1 MB 堆栈,仅此而已。
猜你喜欢
  • 2013-04-29
  • 2010-10-02
  • 2011-09-17
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
相关资源
最近更新 更多