为什么采用线程池方案?
  1. 采用线程池方案其实就是采用 单进程多线程 模式。它能有效利用 多核资源 提高吞吐量(qps)。
  2. 能有效降低 优先级反转 出现的概率。比如有两个计算任务,task1 需要花 1 ms,task2 需要花 20 ms,根据 短任务优先原则 应该先让 task1 使用 CPU;如果是在单线程情况下,task2 事件先到,那么它就会占用 CPU,直到计算完毕才会让出给 task1,这样 task1 的响应时间为 21 ms(有人会说那可以多个单线程进程呀,利用 OS 调度进程来让 task1 得到执行。如果这两个任务是需要共享一些数据的话,IPC 将会十分麻烦,而多线程则在共享数据方面比较简单),task2 的响应时间为 20 ms;如果采用多线程,就算 task1 事件后发生,它也会被分配到空闲的计算线程中去,这样,task1 的响应时间为 1 ms,task2 的响应时间为 20 ms,平均则为 10.5 ms,大大降低了平均响应时间。
  3. 当然,决定了使用多线程,那么自然就可以用线程池来减少线程重复创建销毁所带来的开销。