草庐IT

timer - 如何从 Web 服务器重启(或代码刷新/升级)中恢复 Go 计时器?

例如,考虑一个Web服务,用户可以在其中发出API请求以在特定的预定时间启动任务。任务定义和计划时间保存在数据库中。我想出的第一种方法是启动一个Go计时器并等待计时器在Goroutine中到期(不阻止请求)。这个goroutine在时间到期后,还会触发另一个API请求以开始执行任务。现在重新部署此服务时会出现问题。对于零停机部署,我使用Einhorn与goji.代码重新加载后,显然定时器goroutine和timer-expiration-handlergoroutine都死了。代码重新加载后有什么方法可以恢复Go定时器吗?我正在努力解决的另一个问题是允许用户中断计时器(一旦启动)。G

golang 计时器从零重新计算

我需要编写一个计时器,它可能会将自身重置为零。例如,我有一个trm:=time.NewTimer(10)然后,如果在它到期之前发生了什么事情,计时器将清除它拥有的所有数据,并从0重新计算,就像我重新新建一个相同的计时器一样。我检查了Go的时间API,但没有找到任何东西。有什么建议吗?谢谢。 最佳答案 如何使用time.Reset?Resetchangesthetimertoexpireafterdurationd.Itreturnstrueifthetimerhadbeenactive,falseifthetimerhadexpir

Golang 计时器过期 VS 停止之间的区别?

基于此示例(https://gobyexample.com/timers),计时器可以停止或过期。但是有什么区别呢?packagemainimport"time"import"fmt"funcmain(){timer1:=time.NewTimer(time.Second*2) 最佳答案 用某个duration创建的计时器d(在创建时指定)在此类持续时间过去后到期。这意味着等待持续时间d的计时器channel将仅在持续时间结束后(甚至可能更晚,具体取决于调度)解除对调用者的阻塞。定时器到期可以被认为是事件触发。如果在定时器创建后,你

go - time.Timer 的行为

我是Go的新手,时间包让我有点困惑。所以我正在制作一个聊天框,想法是当你发送消息时,计时器重置为20秒,如果你在20秒内没有回复,你就会被踢出局。我的代码只有在该人输入内容时才有效,但如果他们从未输入任何内容,他们就不会被踢出局。我尝试在for循环之前应用Stop(),但它不起作用。我应该在循环前后而不是在for循环内执行所有计时器吗?func...{timer:=time.NewTimer(20*time.Second)forinput.Scan(){gofunc(){ 最佳答案 你可以使用time.AfterFunc;例如;pa

go - 如何找到 Timer 触发的剩余时间?

我需要在x秒后运行一个函数,并具有一定的控制能力(重置计时器、停止计时器、查找剩余执行时间)。time.Timer非常适合-唯一缺少的是它似乎无法提供查找剩余时间的方法。我有哪些选择?此刻,我在想这样的事情:packagemainimport"time"typeSecondsTimerstruct{Ttime.DurationCchantime.Timecontrolchantime.Durationrunningbool}func(s*SecondsTimer)run(){fors.T.Seconds()>0{time.Sleep(time.Second)select{casef:=

go - 计时器 channel - 在循环内发出标准输出

我创建了一个无限循环来打印“诗人”,但没有在控制台中打印任何内容。funcmain(){t:=time.NewTimer(1*time.Minute)for{k:=不知何故,当我删除下面两行时,程序运行正常k:=我是Golang的新手,请帮助我了解导致此问题的原因。谢谢 最佳答案 Timer类型表示一个单个事件,所以当它发生在这里k:=你遇到了死锁-因为所有的go-routines都在sleep,你永远不会在循环内获得另一个时间值。以下是使用Timer的示例,也许您想改用Ticker?funcmain(){timer:=time.N

c++ - 取消WIN32线程池中计划的work/io/timer项

我一直在研究Windows的(新的?)线程池API。我一直在关注UsingtheThreadPoolFunctions中的示例我一直在仔细研究MSDN上的API。关于清理组,我有些不明白。调用SetThreadpoolCallbackCleanupGroup()时,第三个参数描述为Thecleanupcallbacktobecalledifthecleanupgroupiscanceledbeforetheassociatedobjectisreleased.ThefunctioniscalledwhenyoucallCloseThreadpoolCleanupGroupMembers

windows - 如何将 SetThreadAffinityMask 与 QueryPerformanceFrequency 一起使用?

我与FAA有一个长期计划,在FAA开始部署DellGX-760台式机之前一直运行良好。该程序是空中交通的图形重播。我使用QueryPerformanceFrequency函数来获取处理器计数器。对于GX760,它似乎不依赖于处理器。我找到了这个http://msdn.microsoft.com/en-us/library/ms644904(VS.85).aspx它描述了我所看到的。Onamultiprocessorcomputer,itshouldnotmatterwhichprocessoriscalled.However,youitcangetdifferentresultsond

c - 我如何在 win32 平台上用 C 实现时间驱动的任务?

我是C语言的新手,我试图找到一些代码片段来弄清楚如何在C语言中实现时间触发的任务。我有两个函数,它们的执行时间可能在50到200毫秒之间变化。我想将这些函数传递给一个工作线程,该线程应安排为每500毫秒运行一次。在C(win32平台)中是否有一种简单的方法(如java的TimerTask)来使用标准运行时库实现定时器任务? 最佳答案 使用c你可以使用win32SetTimer功能 关于c-我如何在win32平台上用C实现时间驱动的任务?,我们在StackOverflow上找到一个类似的问

.net - SPI_GETMOUSEHOVERTIME 可以为零吗?

在我的WinForms应用程序中,我使用了SystemParameters.MouseHoverTimeMillisecondsproperty依次调用SystemParametersInfofunction与SPI_GETMOUSEHOVERTIMEinputparameter(根据ILSpy)。我正在使用该属性的返回值来设置我的表单中一些计时器的间隔。一切正常。现在我问自己这是否不够,因为在某些“奇怪”的系统上它可能为零(或更少)。在这种情况下,我必须提供非零回退。由于我没有找到我的假设的证据,有人可以在这里带来一些启示吗? 最佳答案