协程Coroutine
go语言的调度器-小茂博客
对比图
其他语言中的协程
★ C++ : Boost.Coroutine

★ Java : 不支持

★Python : 使用yield关键字实现协程
Python 3.5加入了async def对协程原生支持

goroutine

go语言的调度器-小茂博客
★ 任何函数只需加上go就能送给调度器运行

★ 不需要再定义时区分是否是异步函数

★ 调度器在合适的点进行切换

★ 使用-race来检测数据访问冲突

goroutine可能的切换点

★ I/O , select
★ channel
★ 等待锁
★ 函数调用(有时)
★ runtime.Gosched()
★ 只是参考,不能保证切换,不能保证在其他地方不切换