美文网首页
golang中ticker使用未stop导致cpu上升

golang中ticker使用未stop导致cpu上升

作者: frank3 | 来源:发表于2018-03-06 18:01 被阅读0次

golang中ticker使用未stop导致cpu上升


Introduction

由于代码在进行chan操作时防止chan阻塞,所以添加了timeout,timeout是使用ticker来做的,代码如下:

tc := time.NewTicker(1 * time.Microsecond)
select {
    case <-tc.C:
        return errPxChanFull
    case p.pxChan <- px:
        return nil
}

Reason

虽然golang有垃圾回收机制,但是tc不关闭,垃圾回收机制目测没有回收(这个需要牛人帮忙确认),小弟水平有限,
所以越来越多的tc在进行滴答滴答的使用cpu。


Resolve

tc := time.NewTicker(1 * time.Microsecond)
select {
    case <-tc.C:
        tc.Stop()
        return errPxChanFull
    case p.pxChan <- px:
        tc.Stop()
        return nil
}

加上stop亲测没有在出现cpu上升问题。

相关文章

网友评论

      本文标题:golang中ticker使用未stop导致cpu上升

      本文链接:https://www.haomeiwen.com/subject/yjyrfftx.html