1、修改周期定时不准问题。
This commit is contained in:
parent
f4459ebec4
commit
c97f71a6fa
@ -13,7 +13,6 @@ type taskSlice struct {
|
|||||||
rawCycle int
|
rawCycle int
|
||||||
mode TimeMode
|
mode TimeMode
|
||||||
task func()
|
task func()
|
||||||
tiny bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type TimeWheel struct {
|
type TimeWheel struct {
|
||||||
@ -77,7 +76,6 @@ func (t *TimeWheel) AddTask(id string, mode TimeMode, task func(), flower time.D
|
|||||||
mode: mode,
|
mode: mode,
|
||||||
rawCycle: cycle,
|
rawCycle: cycle,
|
||||||
pos: pos,
|
pos: pos,
|
||||||
tiny: int(flower) < t.slotLen*int(t.interval),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,8 +162,8 @@ func (t *TimeWheel) addTask(task *taskSlice) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var list *list.List
|
var list *list.List
|
||||||
if task.tiny {
|
if task.mode == TimeTypeLoop {
|
||||||
task.cycle = (task.pos - t.curtSlot + t.slotLen) % t.slotLen
|
task.cycle = task.cycle*t.slotLen + (task.pos-t.curtSlot+t.slotLen)%t.slotLen
|
||||||
task.rawCycle = task.cycle
|
task.rawCycle = task.cycle
|
||||||
|
|
||||||
list = t.tinyWheel
|
list = t.tinyWheel
|
||||||
@ -187,7 +185,7 @@ func (t *TimeWheel) removeTask(key string) {
|
|||||||
|
|
||||||
task := etask.Value.(*taskSlice)
|
task := etask.Value.(*taskSlice)
|
||||||
|
|
||||||
if task.tiny {
|
if task.mode == TimeTypeLoop {
|
||||||
_ = t.tinyWheel.Remove(etask)
|
_ = t.tinyWheel.Remove(etask)
|
||||||
} else {
|
} else {
|
||||||
_ = t.slots[task.pos].Remove(etask)
|
_ = t.slots[task.pos].Remove(etask)
|
||||||
|
@ -11,7 +11,8 @@ func Test_timeWheel(t *testing.T) {
|
|||||||
|
|
||||||
<-time.After(10 * time.Millisecond)
|
<-time.After(10 * time.Millisecond)
|
||||||
|
|
||||||
t.Errorf("test2, %v", time.Now())
|
t.Errorf("start time, %v", time.Now())
|
||||||
|
|
||||||
timeWheel.AddTask("test1", TimeTypeLoop, func() {
|
timeWheel.AddTask("test1", TimeTypeLoop, func() {
|
||||||
t.Errorf("test1, %v", time.Now())
|
t.Errorf("test1, %v", time.Now())
|
||||||
}, time.Millisecond*300)
|
}, time.Millisecond*300)
|
||||||
@ -22,5 +23,5 @@ func Test_timeWheel(t *testing.T) {
|
|||||||
t.Errorf("test2, %v", time.Now())
|
t.Errorf("test2, %v", time.Now())
|
||||||
}, time.Second)
|
}, time.Second)
|
||||||
|
|
||||||
<-time.After(6 * time.Second)
|
<-time.After(8 * time.Second)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user