gpt4 book ai didi

go - 我们应该停止这种 Ticker 吗?

转载 作者:IT王子 更新时间:2023-10-29 02:28:38 27 4
gpt4 key购买 nike

我有一个时间自动收报机,它将在时间间隔内(例如每 5 分钟、10 分钟)执行一个函数。我在一个 goroutine 中创建了这个时间代码。我听说即使应用程序停止,这种自动收报机也会泄漏内存。只要应用程序运行,此代码就会一直运行。它应该停止吗?如何正确停止?这是我的实现:

go func() {
for range time.Tick(5 * time.Minute) {
ExecuteFunctionA()
}
}()

像这样的报时器的正确实现是什么?

最佳答案

您可以使用 channel 作为中介来正确停止自动收报机。

通常,我是这样做的:

var stopChan chan bool = make(chan bool)

func Stop() {
stopChan <- true
}

func Run() {
go func() {
ticker := time.NewTicker(5 * time.Minute)
for {
select {
case <- c.stopChan:
ticker.Stop()
return
case <- ticker.C:
ExecuteFunctionA()
}
}
}()
}

你可以在你想安全地停止自动收报机的时候调用Stop函数。

关于go - 我们应该停止这种 Ticker 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52069533/

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