什么时候用通道?
channel
是一个通道,用于端到端的数据传输,这有点像我们平常使用的消息队列,只不过 channel
的发送方 和 接受方 是 goroutine
对象,属于内存级别的通信。
这里涉及到了 goroutine
概念,goroutine
是轻量级的协程,有属于自己的栈空间。 我们可以把它理解为线程,只不过 goroutine
的性能开销很小,并且在用户态
上实现了属于自己的调度模型
。
传统的线程通信有很多方式,像内存共享、信号量等。其中内存共享实现较为简单,只需要对变量进行并发控制,加锁即可。但这种在后续业务逐渐复杂时,将很难维护,耦合性也比较强。
参考文章
## 知乎
https://zhuanlan.zhihu.com/p/395278270
通道作用
- 阻塞
- 协程之间通信。不要共享内存来通信ÿ