当协程阻塞的时候,运行时会自动将同一操作系统线程上的其他协程移动到另一个可运行的线程上,这样这些协程就不会阻塞,并且这个操作对开发人员来说是透明的。调用协程的开销很小,大概只在内存的栈区用几KB,而且通常几KB就够用了。即便不够用,运行时也会自动在栈区多分配点。每次方法调用平均只占用3个CPU指令。 数据来源:https://golang.org/doc/faq