计时器是单个事件计时器,也就是说,计时器只能结束一次。
创建:
:创建计时器
源代码包SRC/Time/Sleep.Go:计时器定义计时器数据结构:
计时器只暴露了一个渠道到外界。当指定的时间到来时,您将写入频道中的系统时间,即事件。
例如,当数据在连接中等待,设置超时,并且时间到达时没有获得数据,则是超时。
在上面的示例中,选择句子正在查询CONN和TIMER.C的两个管道。计时器将在3s后将数据写入Timer.c。如果3S中的conn没有数据,则将其判断为超时。
有时我们希望将来执行一定时间:
delayFunction()将始终等待计时器的事件进入(打印)。
路口
这
路口
有时我们只想等待指定的时间。无需提前停止计时器,也无需重复使用计时器,因此我们可以使用匿名计时器:
打印时间间隔为1,但实际上是计时器,但是代码变得更简单。
我们可以使用AfterFunc简单地实现延迟方法的方法:
例子:
tricker是一个定期计时器,也就是说,一个周期性触发事件。它的数据结构与计时器完全相同:
创建股票时,将指定时间为事件触发周期。这也是股票和计时器之间的主要区别。
示例,每1秒记录的日志:
它将继续从管道中获取事件,并在接收事件后打印一条日志。如果管道中没有数据,则管道中将有一个阻止事件。由于收款人将定期在管道中写入事件,因此上述过程将打印已接收的打印日志。
路口
路口
如果我们需要一个时间旋转任务,我们可以使用简单的tick函数来获取计时器的管道。功能原型如下:
路口
例如,以上错误示例,选择每次检测情况时都会创建一个计时器,并且将连续执行SELECT语句。
正确用法: