go协程和通道

一、协程

 

二、通道

 

我们来验证阻塞:

说明程序阻塞了,阻塞在第一次循环的位置。

上面证明的是接受者阻塞,现在来证明发送者阻塞。

如果发送者发送了一个数据,没有人接收,那么就不再发送下一个数据,除非通道的数据被接收。

 

协程间的同步:

go func1()

go func2()

go func3()

在三个协程间同步数据,通过使用通道来达到这一点。

 

使用带缓冲的通道,这样就不会导致阻塞了。

这里的tmp结果相当于一个信号,它是去通知主程序结束的。

 

 

用for循环遍历通道:

 

管道和选择器模式:

// 通过使用方向注解来限制协程对通道的操作

// 注意 变量请用驼峰方式 不要用下划线来连接

posted @ 2021-10-17 20:18  道霖  阅读(118)  评论(0编辑  收藏  举报