Como podemos lidar com 2 alarmes diferentes enviados por alarm()
??
Por exemplo, se eu tiver A=5
e B=10
, como posso dizer ao meu programa para executar uma ação após A
segundos e outra após B
segundos sem usar sleep()
??
Meu principal objetivo com esta pergunta é entender como podemos lidar com 2 alarmes diferentes no mesmo programa.
Você lida com eles um de cada vez. Primeiro, defina um alarme para
A=5
segundos. Depois de disparar, execute a tarefa necessária e, em seguida, configure outro alarme porB-A = 10-5 = 5
segundos. Depois de disparar, faça a outra tarefa.Ou em geral, salve as tarefas cronometradas em uma lista ordenada, e faça com que haja sempre um alarme programado para o tempo que falta para a primeira tarefa a ser realizada.
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 (
select()
talvez a chamada) em vez dealarm()
, e executaria a tarefa cronometrada no programa principal. Dessa forma, não importa se o alarme disparar no meio de fazer outra coisa e nenhum processamento simultâneo para bagunçar as coisas.