社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
go语言的协程和线程的区别
线程受CPU控制,会随机切换线程的执行顺序
协程一定是先执行完一个协程再执行第二个,除非协程一主动交出执行权
runtime.Gosched()
或者协程一阻塞了
协程和主线程直接读写没有严格的先后顺序,只要有写有读就不会导致阻塞
如图,ch的缓冲为5个,但只写入三个数据,缓冲池没塞满,不会导致阻塞,所以test方法的读取没有执行,然后主线程退出,程序结束
让主线程等一会就能读取出来
如果缓冲设置3,写入四个数据,缓冲满了以后会导致阻塞,阻塞后调用test方法去读取数据,读取成功
暂时就这么理解了,待以后完善!!如果有大神看到愿意更详细的解答感激不尽
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!