我发现动态收缩功能通常已经过时,我能想到的所有原因(堆栈大小为1 MB,或额外的文件描述符,额外的OS调度开销很小)似乎不能抵消延迟启动新线程的延迟开销。为什么会使用自动缩小的线程池?
对于自动收缩(基于超时的)线程池(x86_64硬件上的Posix线程)来演示它仍然是一个可用的模式,最好的用例是什么?
我发现动态收缩功能通常已经过时,我能想到的所有原因(堆栈大小为1 MB,或额外的文件描述符,额外的OS调度开销很小)似乎不能抵消延迟启动新线程的延迟开销。为什么会使用自动缩小的线程池?
对于自动收缩(基于超时的)线程池(x86_64硬件上的Posix线程)来演示它仍然是一个可用的模式,最好的用例是什么?
缩小线程池将释放资源(主要是RAM),然后可用于同一台计算机上运行的其他进程或可能运行在同一硬件上运行的其他进程中。 RAM也可以用来通过缓存来加快速度。
参见:
一般的共识似乎是,如果它是一个短命的任务,线程池将提供性能优势。对于更长寿命的线程来说,它将不那么重要。
没有退休政策的池是内存泄漏。 –