Go goroutine ,协程
在Go语言中goroutine是一个协程,但是跟Python里面的协程有很大的不同:
- 在任何函数前只需要加上go关键字就可以定义为协程;
- 不需要在定义时区分是否是异步函数 VS async def;
- 调度器在适合的点自动进行切换 VS python 手动切换;
- 使用 go run -race 来检测数据访问的冲突;
- 非抢占式;
goroutine可能的切换点:
- I/O (输入/输出), Select
- Channel
- 等待锁
- 函数调用
- runtime.Gosched()