优化定时器

This commit is contained in:
boyce
2020-12-15 18:02:35 +08:00
parent fbd79d90f9
commit 99d968bc67
3 changed files with 22 additions and 7 deletions

View File

@@ -5,7 +5,7 @@ import (
"fmt"
"github.com/duanhf2012/origin/log"
"github.com/duanhf2012/origin/network"
"github.com/duanhf2012/origin/util/timewheel"
"github.com/duanhf2012/origin/util/timer"
"math"
"reflect"
"runtime"
@@ -62,18 +62,17 @@ func (client *Client) Connect(id int,addr string) error {
}
func (client *Client) startCheckRpcCallTimer(){
timer:=timewheel.NewTimer(3*time.Second)
t:=timer.NewTimer(3*time.Second)
for{
select {
case <- timer.C:
timewheel.ReleaseTimer(timer)
timer=timewheel.NewTimer(3*time.Second)
case timer:=<- t.C:
timer.SetupTimer(time.Now())
client.checkRpcCallTimeout()
}
}
timer.Close()
timewheel.ReleaseTimer(timer)
t.Cancel()
timer.ReleaseTimer(t)
}
func (client *Client) makeCallFail(call *Call){

View File

@@ -14,6 +14,17 @@ func SetupTimer(timer *Timer) *Timer{
return timer
}
func NewTimer(d time.Duration) *Timer{
c := make(chan *Timer,1)
timer := newTimer(d,c,nil,"",nil)
SetupTimer(timer)
return timer
}
func ReleaseTimer(timer *Timer) {
releaseTimer(timer)
}
type _TimerHeap struct {
timers []*Timer
}

View File

@@ -89,6 +89,11 @@ func (t *Timer) Do(){
}
}
func (t *Timer) SetupTimer(now time.Time){
t.fireTime = now.Add(t.interval)
SetupTimer(t)
}
func (t *Timer) GetInterval() time.Duration{
return t.interval
}