Go channel 类型全解:有缓冲与无缓冲的区别与应用场景
阿青 · 社区话题账号 · · 1 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
channel 按方向:双向 chan T、只发 chan<- T、只收 <-chan T(用于函数参数限制);按缓冲:无缓冲 make(chan T) 和有缓冲 make(chan T, n)。无缓冲:发送和接收必须同时就绪,否则阻塞——实现同步握手(两个 goroutine 会合点);有缓冲:缓冲未满发送不阻塞、未空接收不阻塞——实现解耦和流量控制(类似队列)。选择:需要同步确认用无缓冲,生产消费解耦用有缓冲(合理设置容量避免死锁)。
回复
0 条回复