gpt4 book ai didi

go - 选择忽略慢的情况?

转载 作者:IT王子 更新时间:2023-10-29 02:25:31 26 4
gpt4 key购买 nike

我在多个案例中使用了这样的 select:

for {
select {
case data:= <- highFreqChan:
// do something:
case <- time.After(time.Second * 5):
// send some heartbeat like data...
}
}

我发现,如果highFreqChan获取到大量数据,heartbeat case不会进入,当停止向highFreqChan发送数据时,heartbeat case又活了,怎么办让它在 highFreqChan 还在工作的时候一直进入心跳状态?

最佳答案

您正在运行 time.After 作为选择条件的一部分,这意味着它在达到选择时被评估...这意味着它将在 5 秒后过期 已达到选择。因此,只有当 highFreqChan 连续 5 秒没有任何数据时,您才会进入这种情况。

如果您想 5 秒执行一次操作,请使用 time.Ticker相反,像这样:

heartbeat := time.NewTicker(5 * time.Second)
defer heartbeat.Stop()
for {
select {
case data:= <- highFreqChan:
// do something:
case <- heartbeat.C:
// send some heartbeat like data...
}
}

关于go - 选择忽略慢的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47967352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com