beego toolbox cron同时添加多个任务造成程序奔溃的解决方法

本文介绍如何通过使用管道和延迟机制避免beegotoolboxcron在同时添加或删除多个任务时导致程序奔溃的问题,提供了一个实例,包括TaskInfo结构、channel的使用和TaskListener函数的改进。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)
		}
	}
}

注:
同时删除任务也有此问题
同一(精确)时间添加的任务不能过多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值