go - 连续向多个通道发送数据
问题描述
我有以下场景:每分钟调用一个函数,每次调用它都会尝试将数据发送到多个定义的通道。
var chan1 = make(chan bool)
var chan2 = make(chan bool)
var chan3 = make(chan bool)
go func() {
for {
<-time.After(1* time.Minute)
chan1 <- true
chan2 <- false
chan3 <- true
}
}()
然后在三个单独的 go 例程中,每个通道都通过select
类似的方式读取。
go func() {
var myVar bool
select {
case <- chan1: //or chan2, chan3 etc...
myVar = true
default:
myVar = false
}()
问题是仅从chan1
第一次基于时间的循环中接收数据。因此,似乎正在发生的是所有后续通道的数据发送被阻止,直到第一个通道被读取。我将如何纠正这一点?
解决方案
推荐阅读
- python - 我应该如何读取 Python 中跨行的指定数量的数字?
- r - R中的任何函数来计算每个下一个单元格值之间的差异?
- javascript - 如何在我使用 javascript 更改选择选项时更改图像
- reactjs - 使用 TinyMCE 将图像上传到后端
- python - M2M 的 Django prefetch_related 与直通关系
- reactjs - 这个 React.useState 返回的 setter 函数怎么不保存状态
- algorithm - Intellij IDE / Android Studio / Entrian 中用于即时文件内容搜索的索引搜索算法是什么?
- python - 用同一列中的其他值替换 NaN 值
- api - Flutter 在设备上访问 REST API 的问题
- kotlin - Android Jetpack 安全参数问题