2017-10-10 56 views
1

我发现动态收缩功能通常已经过时,我能想到的所有原因(堆栈大小为1 MB,或额外的文件描述符,额外的OS调度开销很小)似乎不能抵消延迟启动新线程的延迟开销。为什么会使用自动缩小的线程池?

对于自动收缩(基于超时的)线程池(x86_64硬件上的Posix线程)来演示它仍然是一个可用的模式,最好的用例是什么?

+0

没有退休政策的池是内存泄漏。 –

回答

1

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

参见:

一般的共识似乎是,如果它是一个短命的任务,线程池将提供性能优势。对于更长寿命的线程来说,它将不那么重要。

+0

您能否详细说明一下:除了1MB的堆栈之外,还有哪些内存(RAM)需要详细说明,并澄清您的堆栈内存泄漏意味着什么(我认为原则上不可行)。 – bobah

+0

线程可能很大,只占用较少的内存。你对堆栈是正确的,很难泄漏:) – neuhaus

+0

停放在池中的线​​程的RAM占用空间仅为1 MB堆栈,没有别的。 – bobah

相关问题