GM的问题 从表面来看,貌似GM就已经挺好的了,那么为什么会出现GMP呢? ①存在单一全局锁 内核线程可以同时存在多个,为了线程安全,全局队列会有一个锁,每次访问都需要先获取这个锁,锁竞争严重。 ②频繁的线程阻塞和解阻塞 在存在 syscalls 的情况下,线程经常被阻塞和解阻塞。这增加了很多额外的性能开销。 ③Goroutine的传递 G交接下一个G,线程之间会经常交接可运行的Groutine,会导致延迟增加和额外的开销。