Il seguente programma serve per dimostrare come è possibile sincronizzare due processi per mezzo delle signal.
In realtà il programma non è ottimizzato in quanto ognuno dei processi fa una attesa attiva. Cosa succede se si sostituisce l'attesa attiva con la funzione pause() ? Purtroppo il programma potrebbe piantarsi!! Perchè??
Attenzione!! Se fate la prova di sostituire l'attesa attiva con una pause() nel programma e non succede niente di male, non vuol vuole dire che il programma sia corretto!! Infatti si tratta della cosidetta ``Race Condition'': sono condizioni che capitano molto raramente, ma possono capitare. Sono quindi le condizioni più difficili da debuggare! Provate il seguente programma:
Nel programma sinc2.c, ho inserito uno ciclo for a vuoto fra la kill e la pause di ognuno dei due processi, cosi' da rendere più probabile che un processo sia interrotto proprio fra le due istruzioni. In realtà, se togliamo il ciclo for(), il programma si può ancora piantare, anche se è meno probabile.