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.
|
// Defined in the time package, implemented here in the runtime.
|
||||||
|
//
|
||||||
//go:linkname startTimer time.startTimer
|
//go:linkname startTimer time.startTimer
|
||||||
func startTimer(tim *timer) {
|
func startTimer(tim *timer) {
|
||||||
addTimer(&timerNode{
|
addTimer(&timerNode{
|
||||||
|
@ -48,3 +49,11 @@ func timerCallback(tn *timerNode) {
|
||||||
func stopTimer(tim *timer) bool {
|
func stopTimer(tim *timer) bool {
|
||||||
return removeTimer(tim)
|
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
|
<-timer.C
|
||||||
println("waited on timer at 250ms")
|
println("waited on timer at 250ms")
|
||||||
time.Sleep(time.Millisecond * 250)
|
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
|
- after 125ms
|
||||||
waited on timer at 250ms
|
waited on timer at 250ms
|
||||||
- after 250ms
|
- after 250ms
|
||||||
|
timer reset: false
|
||||||
|
waiting on timer
|
||||||
|
- after 125ms
|
||||||
|
waited on timer at 250ms
|
||||||
|
- after 250ms
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче