在go语言中,与线程比起来,更喜欢用协程这个概念,协程简介:https://www.cnblogs.com/chenny7/p/4498322.html 协程与通道经常搭配使用,使用go关键字开启一个协程,使用chan定义一个通道,用法如下:
关于在一个循环里面开启协程即创建多个协程,一个有意思的例子在这篇文章里面有提到golang for循环里面创建协程问题的研究 - morning_sun - 博客园
go语言中一个重要的特性就是通道chan,通道默认是阻塞且无缓冲的(发送方会阻塞直到接收方从通道中取了值),使用通道时要注意以下几点:
1. 需要使用make来进行初始化,没有初始化在大多数情况下会导致错误,也有特例,参考文章:
[go语言]channel的一个“奇怪”特性 - Go语言中文网 - Golang中文社区
2. 通道分为有缓冲和无缓冲两类,且这两类差别很大,参考文章:
对golang的Channel初始化的有缓存与无缓存解释 - Go语言中文网 - Golang中文社区
3. 单向通道和双向通道:
Go-单向channel_go 单向通道_星星点点洲的博客-CSDN博客
参考资料:
golang 线程与通道 - Go语言中文网 - Golang中文社区
go语言通道channel使用总结_five-zh的博客-CSDN博客