登录
首页 >  Golang >  Go问答

我们是否应该终止这个 Ticker?

来源:stackoverflow

时间:2024-03-25 17:54:34 389浏览 收藏

在使用 Go 语言实现时间行情时,存在内存泄漏风险,因为即使应用程序停止,行情也会持续运行。本文讨论了如何正确停止行情,建议使用通道作为中介,通过调用 `Stop()` 函数安全地停止行情,确保在不再需要时释放资源。

问题内容

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

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

像这样的时间自动收录器的正确实现是什么?


解决方案


您可以使用通道作为中介来正确停止股票代码。

通常,我是这样做的:

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 函数。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>