Manipulando o SIGALRM de duas maneiras diferentes

0

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 diferente após B segundos sem usar sleep() ??

Meu principal objetivo com essa questão é entender como podemos lidar com dois alarmes diferentes no mesmo programa.

    
por Zeno Raiser 02.01.2018 / 15:05

1 resposta

0

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.

    
por 02.01.2018 / 15:59

Tags