beego toolbox cron同时添加多个任务造成程序奔溃的解决方法
问题:并行处理造成程序奔溃。cron全线奔溃
解决方法:管道(channel)封装,添加延迟
例子:
type TaskInfo struct {
Tk toolbox.Tasker
TaskName string
}
var addTask = make(chan TaskInfo, 15)
var deleteTask = make(chan string, 15)
func init(){
go TaskListener()
}
func TaskListener(){
for {
select {
case task := <-addTask:
toolbox.AddTask(task.TaskName,task.Tk)
time.Sleep(10000000) //10ms
case taskName := <-deleteTask:
toolbox.DeleteTask(taskName)
time.Sleep(10000000)
}
}
}
注:
同时删除任务也有此问题
同一(精确)时间添加的任务不能过多