This commit is contained in:
siddontang 2014-04-16 10:26:37 +08:00
parent b0d7cb4278
commit 773210897a
2 changed files with 8 additions and 8 deletions

View File

@ -77,22 +77,23 @@ func NewWheel(tick time.Duration) *Wheel {
}
func (w *Wheel) addTimerInternal(t *timer) {
expires := t.expires
idx := t.expires - w.jiffies
var tv [][]*timer
var i uint64
if idx < tvr_size {
i = t.expires & tvr_mask
i = expires & tvr_mask
tv = w.tv1
} else if idx < (1 << (tvr_bits + tvn_bits)) {
i = (t.expires >> tvr_bits) & tvn_mask
i = (expires >> tvr_bits) & tvn_mask
tv = w.tv2
} else if idx < (1 << (tvr_bits + 2*tvn_bits)) {
i = (t.expires >> (tvr_bits + tvn_bits)) & tvn_mask
i = (expires >> (tvr_bits + tvn_bits)) & tvn_mask
tv = w.tv3
} else if idx < (1 << (tvr_bits + 3*tvn_bits)) {
i = (t.expires >> (tvr_bits + 2*tvn_bits)) & tvn_mask
i = (expires >> (tvr_bits + 2*tvn_bits)) & tvn_mask
tv = w.tv4
} else if int64(idx) < 0 {
i = w.jiffies & tvr_mask
@ -101,10 +102,10 @@ func (w *Wheel) addTimerInternal(t *timer) {
if idx > 0x00000000ffffffff {
idx = 0x00000000ffffffff
t.expires = idx + w.jiffies
expires = idx + w.jiffies
}
i = (t.expires >> (tvr_bits + 3*tvn_bits)) & tvn_mask
i = (expires >> (tvr_bits + 3*tvn_bits)) & tvn_mask
tv = w.tv5
}

View File

@ -5,7 +5,7 @@ import (
"time"
)
var testWheel = NewWheel(100 * time.Millisecond)
var testWheel = NewWheel(1 * time.Millisecond)
func TestTimer(t *testing.T) {
t1 := testWheel.NewTimer(500 * time.Millisecond)
@ -39,5 +39,4 @@ func TestTicker(t *testing.T) {
after := time.Now()
println(after.Sub(before).String())
}