Ho cercato di capire la complessità di come interagiscono i fili POSIX e i segnali POSIX. In particolare, sono interessato a:Segnali e segnali POSIX
- Qual è il modo migliore per controllare a quale thread viene consegnato un segnale (presupponendo che non sia fatale in primo luogo)?
- Qual è il modo migliore per dire a un altro thread (che potrebbe essere effettivamente occupato) che il segnale è arrivato? (So già che si tratta di una cattiva idea di utilizzare le variabili di condizione pthread da un gestore di segnale.)
- Come posso tranquillamente gestire il passaggio delle informazioni che un segnale è verificato ad altri thread? Questo deve succedere nel gestore del segnale? (Non in generale vogliono uccidere gli altri thread;. Ho bisogno di un approccio molto più sottile)
Per avere un riferimento sul perché voglio questo, sto ricercando come convertire il pacchetto TclX per supportare le discussioni, o per dividerlo e almeno fare alcune discussioni utili per il supporto delle parti. I segnali sono una di quelle parti che è di particolare interesse.
Questa è una risposta molto più utile, soprattutto perché può essere utilizzata anche per gestire la gestione del segnale non fatale. Grazie! –
È più semplice se il thread di gestione del segnale non installa affatto i gestori di segnale - invece, scorre su 'sigwaitinfo()' (o 'sigtimedwait()'), quindi li invia al resto dell'applicazione come descritto nell'ultimo paragrafo. – caf
@ CAF, davvero così. aggiornato – pilcrow