在什么条件下,将多个线程池与单个线程池相比,最佳做法是什么?
我使用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.
在初始考虑时,似乎为该进程设置一个线程池是首选选项,这样当其他线程池中可能存在未使用的线程时,线程不会被不必要地旋转。
显然,文档中提到了一个例外 - 当线程池需要不同的特性时。在确定我是否应该使用多个线程池而不是单个默认池时,我应该考虑哪些其他条件?
答案 0 :(得分:2)
所有这些都假定所有线程都需要相同的特性:
通常,单个池最好。
有时,您在架构上希望应用程序的不同组件彼此不了解。在这种情况下,他们不应该知道彼此的线程池。这将是一个架构决策。
特别是,如果您加载第三方组件,则很难共享池。
另一个原因是,如果其中一个工作负载存在充斥池并中断其他工作负载的风险,则将其与另一个工作负载隔离开来。