协程为什么是轻量级的线程呢?
非抢占式多任务处理, 由协程主动交出控制权. 对比线程, 线程随时都有可能被cpu切换, 线程是抢占式任务处理. 我们是没有控制权的....为什么报错了呢? 我们通过race 来看一下
go run -race goroutine.go
?
可以看到报错的原因是, 同一块空间, 在第七个协程读, 在主协程写. 这样就是有问题的了....主goroutine在读, 第7个协程在写. 所以这样是有问题的. 这个问题可以通过chan来解决.
4. 子程序是协程的一个特例
?...我们知道每一个函数都是一个子程序, 子程序是协程的一个speical case, 那怎样才算是一个special case呢?
普通函数和协程的区别
?
...这个事情不需要程序员管了, 调度器可能开一个线程,也可能开两个线程进行执行.
5. go语言的协程
?