Sim*_*Fox 19
没有循环就无法清空通道.如果你没有任何并发接收器,那么你可以使用这个简单的循环:
for len(ch) > 0 {
<-ch
}
Run Code Online (Sandbox Code Playgroud)
如果你有并发接收器,那么使用循环:
L:
for {
select {
case <-c:
default:
break L
}
}
Run Code Online (Sandbox Code Playgroud)
您所描述的内容本质上是活泼的,因为频道上可能存在重新连接的合法请求。我建议不要试图耗尽渠道,而是跟踪时间。
在您的重新连接频道上发布时间。重新连接完成后,记下时间。在使用重新连接通道时,丢弃早于上次重新连接的所有消息。
实现此目的的另一个更同步的解决方案是将重新连接通道设置为布尔值。发布“true”以重新连接。重新连接完成后,发布“false”。然后消耗该通道,直到发现“假”。
| 归档时间: |
|
| 查看次数: |
13056 次 |
| 最近记录: |