Você lida com eles um de cada vez. Primeiro, defina um alarme para A=5
segundos. Depois que ele for disparado, execute a tarefa necessária e configure outro alarme por B-A = 10-5 = 5
segundos. Depois que ele disparar, faça a outra tarefa.
Ou, em geral, salve as tarefas cronometradas em uma lista ordenada e faça com que sempre haja um alarme programado para o tempo restante até a primeira tarefa a ser executada.
Ainda mais geralmente, você provavelmente está fazendo outra coisa enquanto isso, então você pode ter algum tipo de loop de eventos. Nesse caso, você usaria um tempo limite no loop de eventos (talvez a select()
) em vez de alarm()
e executasse a tarefa cronometrada no programa principal. Dessa forma, não importa se o alarme dispara bem no meio de fazer outra coisa e nenhum processamento simultâneo atrapalhar as coisas.