[dev] Go的协程切换问题
子标题:runtime.Gosched() 是干嘛用的?
1. go程序都有一个环境变量,做线程数设置
GOMAXPROCS
2. 当协程数小于等于线程数的时候,程序行为上与多线程没有区别。
3. 当协程数大于线程数的时候,协程有可能会独占线程,导致别的协程没有执行的契机。
这个时候,可以用一个系统调用:
runtime.Gosched()
给别人一个执行的契机。
见:
https://stackoverflow.com/questions/13107958/what-exactly-does-runtime-gosched-do