关于Go的 goroutine,
有几点需要牢记:
- 它们不是Java或C ++线程的意义上的线程
- goroutines更像是 greenlet
- go运行时在 系统线程 之间多路复用goroutines __
- 系统线程数由环境变量控制,
GOMAXPROCS
我认为当前默认为1。将来可能会改变
- 系统线程数由环境变量控制,
- goroutines返回当前线程的方式由几种不同的结构控制
- 在 select语句 可以产生控制回线
- 在 通道 上发送可以将控制权交还给线程
- 进行IO操作可以将控制权交还给线程
runtime.Gosched()
明确地将控制权交还给线程
您看到的行为是因为main函数从不屈服于线程,而是参与了繁忙的循环,并且由于只有一个线程,因此main循环无处运行。



