怎么使用go带缓冲chan实现消息队列功能
导读:本文共1708字符,通常情况下阅读需要6分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 1、Channels 定义通道是一种支持多类型的管道,您可以通过它使用通道运算符 <- 发送和接收值。数据沿箭头方向流动。ch<-v//Sendvtochannelch.v:=<-ch//Receivefromch,and//assignvaluetov.与 maps 和 slices 一样,通道必须在使用前创建:ch:=make(chan... ...
音频解说
目录
(为您整理了一些要点),点击可以直达。通道是一种支持多类型的管道,您可以通过它使用通道运算符 <- 发送和接收值。
数据沿箭头方向流动。
与 maps 和 slices 一样,通道必须在使用前创建:
默认情况下,发送和接收阻塞,直到另一方准备就绪。
这允许 goroutines 在没有显式锁或条件变量的情况下进行同步。
无缓冲区: 存入读取一次,存入后未取,再存入就会堵塞,同样未存,就取也会堵塞。
有缓冲区: 只有当缓冲区满了,才会堵塞存;只有缓冲区空时,才会堵塞取。
len(channel) 返回缓冲区现有数据长度
cap(channel) 返回缓冲区的大小
close(channel) 关闭 channel,关闭后,读取不到数据。如下,如果其他协程关掉 channel 则会跳出循环
多协程使用chan是并发安全的,以下展示一个简单的例子:
本文:
怎么使用go带缓冲chan实现消息队列功能的详细内容,希望对您有所帮助,信息来源于网络。