Этот коммит содержится в:
Joe Shaw 2022-08-24 12:19:31 -04:00 коммит произвёл Ron Evans
родитель 303410d3fc
коммит f439514703
3 изменённых файлов: 27 добавлений и 0 удалений

Просмотреть файл

@ -13,6 +13,7 @@ func (t *timerNode) whenTicks() timeUnit {
}
// Defined in the time package, implemented here in the runtime.
//
//go:linkname startTimer time.startTimer
func startTimer(tim *timer) {
addTimer(&timerNode{
@ -48,3 +49,11 @@ func timerCallback(tn *timerNode) {
func stopTimer(tim *timer) bool {
return removeTimer(tim)
}
//go:linkname resetTimer time.resetTimer
func resetTimer(tim *timer, when int64) bool {
tim.when = when
removed := removeTimer(tim)
startTimer(tim)
return removed
}

13
testdata/timers.go предоставленный
Просмотреть файл

@ -38,4 +38,17 @@ func main() {
<-timer.C
println("waited on timer at 250ms")
time.Sleep(time.Millisecond * 250)
reset := timer.Reset(time.Millisecond * 250)
println("timer reset:", reset)
println("waiting on timer")
go func() {
time.Sleep(time.Millisecond * 125)
println(" - after 125ms")
time.Sleep(time.Millisecond * 250)
println(" - after 250ms")
}()
<-timer.C
println("waited on timer at 250ms")
time.Sleep(time.Millisecond * 250)
}

5
testdata/timers.txt предоставленный
Просмотреть файл

@ -9,3 +9,8 @@ waiting on timer
- after 125ms
waited on timer at 250ms
- after 250ms
timer reset: false
waiting on timer
- after 125ms
waited on timer at 250ms
- after 250ms