X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=signal.tex;h=95974f3b9577ab899c08bee02ffc1b160e498fa8;hp=8218e772fde4460e6694a1593217713c42b4d00a;hb=15fa5013a3b410ce14e4ec38ca3e312227478e76;hpb=c7fb856f311d5aa072df08bd8fd61b66dcb1ec6b diff --git a/signal.tex b/signal.tex index 8218e77..95974f3 100644 --- a/signal.tex +++ b/signal.tex @@ -1432,13 +1432,18 @@ void alarm_hand(int sig) { \label{fig:sig_timespec_def} \end{figure} -Ma questa, a parte il non gestire il caso in cui si è avuta una precedente -chiamata a \func{alarm}, presenta una pericolosa race condition. Infatti se il -processo viene interrotto fra la chiamata di \func{alarm} e \func{pause} può -capitare (nel caso il sistema sia molto carico) che quest'ultima possa essere -eseguita dopo l'arrivo di \macro{SIGALRM}. In questo caso ci si troverebbe di -fronte ad un deadlock, in cui \func{pause} non verrebbe mai interrotta (se non -in caso di un altro segnale). +Ma questa funzione, a parte il non gestire il caso in cui si è avuta una +precedente chiamata a \func{alarm}, presenta una pericolosa race condition. +Infatti se il processo viene interrotto fra la chiamata di \func{alarm} e +\func{pause} può capitare (nel caso il sistema sia molto carico) che +quest'ultima possa essere eseguita dopo l'arrivo di \macro{SIGALRM}. In questo +caso ci si troverebbe di fronte ad un deadlock, in cui \func{pause} non +verrebbe mai interrotta (se non in caso di un altro segnale). + +Come abbiamo accennato in \secref{sec:proc_atom_oper} quando si ha a che fare +con i segnali + + \subsection{Le funzioni \func{sigprocmask} e \func{sigpending}}