File tree Expand file tree Collapse file tree 3 files changed +25
-0
lines changed Expand file tree Collapse file tree 3 files changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ func (t *timerNode) whenTicks() timeUnit {
13
13
}
14
14
15
15
// Defined in the time package, implemented here in the runtime.
16
+ //
16
17
//go:linkname startTimer time.startTimer
17
18
func startTimer (tim * timer ) {
18
19
addTimer (& timerNode {
@@ -48,3 +49,11 @@ func timerCallback(tn *timerNode) {
48
49
func stopTimer (tim * timer ) bool {
49
50
return removeTimer (tim )
50
51
}
52
+
53
+ //go:linkname resetTimer time.resetTimer
54
+ func resetTimer (tim * timer , when int64 ) bool {
55
+ tim .when = when
56
+ removed := removeTimer (tim )
57
+ startTimer (tim )
58
+ return removed
59
+ }
Original file line number Diff line number Diff line change @@ -37,5 +37,16 @@ func main() {
37
37
}()
38
38
<- timer .C
39
39
println ("waited on timer at 250ms" )
40
+ reset := timer .Reset (time .Millisecond * 250 )
41
+ println ("timer reset:" , reset )
42
+ println ("waiting on timer" )
43
+ go func () {
44
+ time .Sleep (time .Millisecond * 125 )
45
+ println (" - after 125ms" )
46
+ time .Sleep (time .Millisecond * 250 )
47
+ println (" - after 250ms" )
48
+ }()
49
+ <- timer .C
50
+ println ("waited on timer at 250ms" )
40
51
time .Sleep (time .Millisecond * 250 )
41
52
}
Original file line number Diff line number Diff line change @@ -9,3 +9,8 @@ waiting on timer
9
9
- after 125ms
10
10
waited on timer at 250ms
11
11
- after 250ms
12
+ timer reset: true
13
+ waiting on timer
14
+ - after 125ms
15
+ waited on timer at 250ms
16
+ - after 250ms
You can’t perform that action at this time.
0 commit comments