以两种不同的方式处理 SIGALRM

以两种不同的方式处理 SIGALRM

我们如何处理alarm()??发送的 2 个不同的警报?

例如,如果我有A=5B=10,我怎么能告诉我的程序在A几秒后执行一项操作,并在几秒后执行不同的操作B而不使用sleep()

我提出这个问题的主要目的是了解如何在同一个程序中处理两个不同的警报。

答案1

你一次处理一个。首先,设置几秒钟的闹钟A=5。警报响起后,执行所需的任务,然后设置另一个警报几B-A = 10-5 = 5秒钟。点火后,执行其他任务。

或者一般来说,将定时任务保存在排序列表中,并使其始终为要完成的第一个任务的剩余时间编程为警报。

更一般地说,您可能同时在做其他事情,因此您可能有某种事件循环。在这种情况下,您可以在事件循环(可能是调用)中使用超时select()而不是alarm(),并从主程序执行定时任务。这样,即使警报在做其他事情的过程中触发也没关系,并且没有并发处理来搞乱事情。

相关内容