golang基础之通道

本文详细介绍了Golang中的通道(Channels),包括何时使用通道、通道的作用、无缓冲和有缓冲通道、单向通道、死锁以及如何用通道做同步。通道是Golang中协程间通信的关键,它提供了安全的数据传输,避免了传统的并发问题,如通过共享内存进行通信。文章还讲解了如何使用for-range遍历通道内容和如何处理通道的关闭。
摘要由CSDN通过智能技术生成
什么时候用通道?

channel 是一个通道,用于端到端的数据传输,这有点像我们平常使用的消息队列,只不过 channel发送方接受方goroutine 对象,属于内存级别的通信。

这里涉及到了 goroutine 概念,goroutine 是轻量级的协程,有属于自己的栈空间。 我们可以把它理解为线程,只不过 goroutine 的性能开销很小,并且在用户态上实现了属于自己的调度模型

传统的线程通信有很多方式,像内存共享、信号量等。其中内存共享实现较为简单,只需要对变量进行并发控制,加锁即可。但这种在后续业务逐渐复杂时,将很难维护,耦合性也比较强。

参考文章
## 知乎
https://zhuanlan.zhihu.com/p/395278270
通道作用
  • 阻塞
  • 协程之间通信。不要共享内存来通信ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叱咤少帅(少帅)

如果文章对你有帮助就打赏下吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值