如何打断ticker定时器的阻塞状态(go)
Posted 我要出家当道士
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何打断ticker定时器的阻塞状态(go)相关的知识,希望对你有一定的参考价值。
简介
如下代码所示,一个线程负责处理定时任务,如果发生紧急事件需要打断当前正在阻塞等待执行的任务,可以通过重置另一个并行的定时器来打断阻塞。代码很简单,备份自用
package main
import (
"fmt"
"log"
"time"
)
type Student struct {
name string
age int
}
var tick = time.NewTicker(1)
var tickSign = time.NewTicker(time.Hour)
var a = 0
func test(){
for{
tick.Reset(time.Second * 10)
select {
case <- tick.C:
log.Print("tick tick tick")
case <- tickSign.C:
log.Print("tickSign tickSign tickSign")
tickSign.Reset(time.Hour)
continue
}
}
}
func test1() {
go test()
n := 0
for{
fmt.Scan(&n)
tickSign.Reset(time.Nanosecond * time.Duration(n))
}
}
func main() {
test1()
}
以上是关于如何打断ticker定时器的阻塞状态(go)的主要内容,如果未能解决你的问题,请参考以下文章