<p>What is the good way to make a endless ticker in golang ?
I would like to perform an action each 30 seconds in my program</p>
<p>regards and thanks</p>
<hr/>**评论:**<br/><br/>TheMerovius: <pre><p><a href="https://godoc.org/time#NewTicker" rel="nofollow">Like this</a></p></pre>WellAdjustedOutlaw: <pre><p>Is there a reason you can't use an endless for {} with a sleep for 30 seconds? Do you specifically need the semantics of a ticker?</p>
<p>If you actually need the semantics of a ticker, you'd just have an endless for loop and select from the ticker's channel. This would cause the loop to block waiting for the channel.</p>
<p>Either way, you need to make sure that what you want isn't a minimum 30s delay after your work is completed, and instead a timer that will tick every 30s but will skip missed ticks. So if your work takes 29 seconds to run, it will run again in 1 second. And if it takes 31 seconds the timer will tick again in 29 seconds.</p></pre>UniverseCity: <pre><p>In the case of the former you should use <a href="https://golang.org/pkg/time/#Tick" rel="nofollow">time.Tick</a></p></pre>relvae: <pre><p>Doesn't tick block until the tick is received? If it takes 31 seconds the next iteration would start immediately. </p>
<p>Edit: nvm I looked at the source and you are right NewTicker does drop messages for slow receivers</p></pre>WellAdjustedOutlaw: <pre><p>Yeah, I stumbled on it accidentally which is the only reason I knew.</p></pre>PacNinja: <pre><p>Can use Ticker in time package. Example: <a href="https://gobyexample.com/tickers" rel="nofollow">https://gobyexample.com/tickers</a></p></pre>imroc: <pre><p>for range time.Tick(30*time.Second) {
......
}</p></pre>
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码`
- 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传