channel主要做什么事情

本文阅读 2 分钟
首页 golang 正文

题目序号:90

题目来源:好未来

频次:1

答案:咸鱼没有早餐

在 go 中遵循的原则有一条:不要通过共享内存的方式进行通信,而是应该通过通信的方式共享内存

go 采用了 CSP 模型来实现通信,而 channel 则是实现中的重要桥梁

由于 channel 分为有缓存和无缓存两种类型

对于无缓存的 channel 保证了数据的发送和接收必须同时完成,否则发送方 goroutine 会阻塞等待数据被取出,同样接收方也会阻塞等待发送方发送数据

对于有缓存的 channel 只要缓冲区不空,使用有缓冲 channel 进行通信的 goroutine 可以异步的发送和接收数据

因此 channel 一般有以下使用场景

  • goroutine 之间通信
  • goroutine 同步
  • 并发读写
  • 充当同步量/互斥量
  • 定时器
  • ...
本文来自投稿,不代表本站立场,如若转载,请注明出处:
syncpool的实现原理
« 上一篇 09-17
问了sync.Map(我说我对sync.Pool比较熟,就说Pool了)
下一篇 » 09-17

发表评论

发表评论