diff --git a/lego/sys/timewheel/timewheel.go b/lego/sys/timewheel/timewheel.go index 2e0f2acbd..2dae4f6bc 100644 --- a/lego/sys/timewheel/timewheel.go +++ b/lego/sys/timewheel/timewheel.go @@ -88,7 +88,7 @@ func (t *Task) Reset() { t.circle = false } -//启动时间轮 +// 启动时间轮 func (this *TimeWheel) Start() { // onlye once start this.onceStart.Do( @@ -114,12 +114,12 @@ func (this *TimeWheel) Remove(task *Task) error { return nil } -//停止时间轮 +// 停止时间轮 func (this *TimeWheel) Stop() { this.stopC <- struct{}{} } -//此处写法 为监控时间轮是否正常执行 +// 此处写法 为监控时间轮是否正常执行 func (this *TimeWheel) tickGenerator() { if this.tickQueue == nil { return @@ -137,7 +137,7 @@ func (this *TimeWheel) tickGenerator() { } } -//调度器 +// 调度器 func (this *TimeWheel) schduler() { queue := this.ticker.C if this.tickQueue != nil { @@ -160,7 +160,7 @@ func (this *TimeWheel) schduler() { } } -//清理 +// 清理 func (this *TimeWheel) collectTask(task *Task) { index := this.bucketIndexes[task.id] delete(this.bucketIndexes, task.id) @@ -185,8 +185,9 @@ func (this *TimeWheel) handleTick() { } if task.async { - go func(task *Task) { - go this.calltask(task, task.args...) + go func(_task *Task) { + this.calltask(_task, _task.args...) + this.collectTask(task) }(task) } else { @@ -202,7 +203,9 @@ func (this *TimeWheel) handleTick() { } // gc - this.collectTask(task) + if !task.async { + this.collectTask(task) + } } if this.currentIndex == this.bucketsNum-1 { @@ -213,7 +216,7 @@ func (this *TimeWheel) handleTick() { this.currentIndex++ } -//执行时间轮事件 捕捉异常错误 防止程序崩溃 +// 执行时间轮事件 捕捉异常错误 防止程序崩溃 func (this *TimeWheel) calltask(task *Task, args ...interface{}) { defer func() { //程序异常 收集异常信息传递给前端显示 if r := recover(); r != nil {