Linux CPP程序的三种实现定时任务的方法

我的定时任务中的 iostream等会core down,很苦恼。

今天发现我的定时任务里cout竟然挂掉了,然后socket的write和read会被阻塞了,好奇怪的事情,redis也阻塞着。

然后师傅看了我的程序,认为我的定时任务是使用sigalarm定时,然后在信号中断里做业务,而我的业务太多了,一般他们不在中断中做太多业务,怀疑我的cout、fout或者redisCommand的上下文被破坏掉了,建议我不要这么做。


现在我总结几个做定时任务的方法吧:

一、多线程,另起一个线程,假如30s做定时时间,那么sleep 30s,然后做相应动作

二、main函数里打时间戳,每次进入到要做业务的代码块时判断时间是否大于30s,如果大于,就做相应业务,然后更新时间

三、signal,就是我现在做的方法,只不过在中断程序里设置标志,把要定时执行的任务放在main函数里,每次进入时判断标志决定是否执行。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值