Zeno Raiser Asked: 2018-01-03 06:05:38 +0800 CST2018-01-03 06:05:38 +0800 CST 2018-01-03 06:05:38 +0800 CST 以两种不同的方式处理 SIGALRM 772 我们如何处理发送的 2 个不同的警报alarm()? 例如,如果我有A=5and B=10,我怎么能告诉我的程序在几秒钟后做一个动作,在A几秒钟后做一个不同的动作B而不使用sleep()?? 我提出这个问题的主要目的是了解我们如何在同一个程序中处理 2 个不同的警报。 signals ipc 1 个回答 Voted Best Answer ilkkachu 2018-01-03T06:59:27+08:002018-01-03T06:59:27+08:00 你一次处理一个。首先,设置A=5几秒钟的闹钟。触发后,执行所需的任务,然后再设置B-A = 10-5 = 5几秒钟的警报。点火后,执行其他任务。 或者通常,将定时任务保存在排序列表中,并使其始终为第一个要完成的任务的剩余时间编程警报。 更一般地说,您可能同时在做其他事情,因此您可能有某种事件循环。在这种情况下,您将在事件循环(select()可能是调用)中使用 timeout 而不是alarm(),并从主程序执行定时任务。这样一来,警报是否在做其他事情的过程中触发并且没有并发处理来搞砸事情并不重要。
你一次处理一个。首先,设置
A=5
几秒钟的闹钟。触发后,执行所需的任务,然后再设置B-A = 10-5 = 5
几秒钟的警报。点火后,执行其他任务。或者通常,将定时任务保存在排序列表中,并使其始终为第一个要完成的任务的剩余时间编程警报。
更一般地说,您可能同时在做其他事情,因此您可能有某种事件循环。在这种情况下,您将在事件循环(
select()
可能是调用)中使用 timeout 而不是alarm()
,并从主程序执行定时任务。这样一来,警报是否在做其他事情的过程中触发并且没有并发处理来搞砸事情并不重要。