1. 典型线程池缺陷

处理流程
线程池中的worker线程不断地从任务队列中取出任务G并执行,而worker线程的调度会交由操作系统。
缺陷分析
- Worker线程执行的G任务中发生系统调用,操作系统会将该Worker线程阻塞,意味着消费任务队列的可用worker线程变少---线程池消费任务队列的能力变弱
- Worker线程执行的大部分任务G发生系统调用---任务队列中会产生任务堆积
- 虽然可以通过增加线程池的worker线程数来改善以上,但是CPU数量有限,随着线程数量增加,线程争抢CPU和线程频繁切换问题加剧,产生性能瓶颈。
2. Goroutine调度器
说明:Go提供的一种调度机制,可以在线程中实现协程(Goroutine)的调度,上下文切换更轻量。