go 因为有协程,所以高并发是它的一大优势,但是我看博客,别人说 groutine 的底层也是线程池,这样跟 Java 也一样,为什么 go 在高并发这块就很厉害呢(我不知道 Java 在高并发这块是不是比 go 弱,我没做过什么高并发项目)。发散一下就是 Java 的 NIO +线程池(现实例子就是 netty )跟 go 在高并发这块差距是不是巨大?
@MakHoCheung 并没有线程上下文切换,这几个协程还是跑在同一个 os thread 上。线程上下文切换是指 cpu 上的实体线程里 os thread 切换的过程,这个过程是在会有 user space 到 kernel space 的切换同时 kernel space 里也会做 os thread 的切换,而协程的切换全发生在 user space 里且没有 os thread 的切换