怎么使用go带缓冲chan实现消息队列功能(chan,go,开发技术)

时间:2024-05-02 00:55:13 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    %E6%80%8E%E4%B9%88%E4%BD%BF%E7%94%A8go%E5%B8%A6%E7%BC%93%E5%86%B2chan%E5%AE%9E%E7%8E%B0%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97%E5%8A%9F%E8%83%BD

通道是一种支持多类型的管道,您可以通过它使用通道运算符 <- 发送和接收值。

数据沿箭头方向流动。

与 maps 和 slices 一样,通道必须在使用前创建:

默认情况下,发送和接收阻塞,直到另一方准备就绪。
这允许 goroutines 在没有显式锁或条件变量的情况下进行同步。

无缓冲区: 存入读取一次,存入后未取,再存入就会堵塞,同样未存,就取也会堵塞。

有缓冲区: 只有当缓冲区满了,才会堵塞存;只有缓冲区空时,才会堵塞取。

len(channel) 返回缓冲区现有数据长度

cap(channel) 返回缓冲区的大小

close(channel) 关闭 channel,关闭后,读取不到数据。如下,如果其他协程关掉 channel 则会跳出循环

多协程使用chan是并发安全的,以下展示一个简单的例子:

本文:怎么使用go带缓冲chan实现消息队列功能的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:怎么给k8s集群里的资源打标签下一篇:

6 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18