runtime: implement resetTimer
Этот коммит содержится в:
родитель
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
предоставленный
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
предоставленный
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
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче