|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6399
|
[C] Funzioni interrupt-safe
Ciao a tutti,
qualcuno mi saprebbe spiegare perché questa funzione è thread-safe ma non interrupt-safe? Codice:
void function()
{
lock(mtx);
/* code ... */
unlock(mtx);
}
Ultima modifica di Unrue : 30-09-2011 alle 18:18. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
E' thread-safe perché la parte critica è protetta dall'accesso facendo ricorso a un lock.
Non è interrupt-safe, perché l'esecuzione della parte critica può essere interrotta in qualsiasi momento, pur avendo acquisito il lock. Ad esempio, potrebbe scatenarsi l'interrupt del timer che risveglia lo scheduler, e questi passa la CPU a un altro processo. Per essere interrupt-safe è necessario disattivare qualunque interrupt prima di entrare nella parte critica. Se fossimo in AmigaOS, basterebbe questo: Codice:
void function()
{
Disable(ExecBase);
/* code ... */
Enable(ExecBase);
}
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6399
|
Quote:
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Tu non hai parlato di dead-lock prima.
![]() E' chiaro che, avendo acquisito il lock, una volta che il controllo torna al processo / thread che era entrato nella sezione critica, tutto prosegue senza problemi. Questo perché si tratta di codice thread-safe, appunto. Un codice interrupt-safe si aspetta che non possa essere interrotto da interrupt, appunto, magari perché sta manipolando dei registri hardware o perché deve effettuare delle operazioni che richiedono timing ben precisi. Si tratta di due problematiche completamente diverse.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6399
|
Quote:
leggendo il tuo intervento e questo link: http://en.wikipedia.org/wiki/Reentra..._thread_safety ora mi è più chiaro |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:33.





















