拥有多个线程池而不是单个线程池有什么好处?

时间:2016-02-10 23:25:47

标签: windows multithreading threadpool

在什么条件下,将多个线程池与单个线程池相比,最佳做法是什么?

我使用the Microsoft threadpool在Windows上进行开发,以处理文档声明的工作项:

Each process can create multiple isolated pools with different characteristics as necessary. 
There is also a default pool for each process.

在初始考虑时,似乎为该进程设置一个线程池是首选选项,这样当其他线程池中可能存在未使用的线程时,线程不会被不必要地旋转。

显然,文档中提到了一个例外 - 当线程池需要不同的特性时。在确定我是否应该使用多个线程池而不是单个默认池时,我应该考虑哪些其他条件?

1 个答案:

答案 0 :(得分:2)

所有这些都假定所有线程都需要相同的特性:

通常,单个池最好。

有时,您在架构上希望应用程序的不同组件彼此不了解。在这种情况下,他们不应该知道彼此的线程池。这将是一个架构决策。

特别是,如果您加载第三方组件,则很难共享池。

另一个原因是,如果其中一个工作负载存在充斥池并中断其他工作负载的风险,则将其与另一个工作负载隔离开来。