mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-04 11:07:46 +00:00
runtime: implement resetTimer
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Vendored
+13
@@ -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)
|
||||
}
|
||||
|
||||
Vendored
+5
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user