goroutine协程相关笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dhd040805/article/details/80257698

go语言的协程和线程的区别

线程受CPU控制,会随机切换线程的执行顺序

协程一定是先执行完一个协程再执行第二个,除非协程一主动交出执行权

runtime.Gosched()

或者协程一阻塞了


协程和主线程直接读写没有严格的先后顺序,只要有写有读就不会导致阻塞

如图,ch的缓冲为5个,但只写入三个数据,缓冲池没塞满,不会导致阻塞,所以test方法的读取没有执行,然后主线程退出,程序结束

让主线程等一会就能读取出来

如果缓冲设置3,写入四个数据,缓冲满了以后会导致阻塞,阻塞后调用test方法去读取数据,读取成功



暂时就这么理解了,待以后完善!!如果有大神看到愿意更详细的解答感激不尽


猜你喜欢

转载自blog.csdn.net/dhd040805/article/details/80257698