Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5 introduce Dynamic Multi Frame Generation e MFG 6X, permettendo fino a cinque frame generati per ogni frame renderizzato. I test su Cyberpunk 2077 e 007 First Light mostrano forti incrementi di FPS e riduzione della latenza su RTX 5090 Laptop. Migliorano fluidità, stabilità e qualità visiva.
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Xiaomi ha portato Redmi Watch 6 anche sul mercato italiano, puntando su un display AMOLED da 2,07 pollici con picco di luminosità a 2000 nit, frame in alluminio da 9,9mm e un'autonomia dichiarata di 12 giorni. Lo smartwatch gira su HyperOS 3 e integra GPS, Bluetooth 5.4 e oltre 150 sport mode. Il tutto a meno di 100 euro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-09-2011, 17:16   #1
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 7034
[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 17:18.
Unrue è offline   Rispondi citando il messaggio o parte di esso
Old 30-09-2011, 20:36   #2
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
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
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 01-10-2011, 16:22   #3
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 7034
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
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:
Non capisco, anche se avviene un interrupt, una volta che il controllo ripassa al thread che ha acquisito il lock, non si va comunque più avanti? Perché si crea il deadlock?
Unrue è offline   Rispondi citando il messaggio o parte di esso
Old 01-10-2011, 16:28   #4
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
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
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 01-10-2011, 22:52   #5
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 7034
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
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.
Ok,

leggendo il tuo intervento e questo link:

http://en.wikipedia.org/wiki/Reentra..._thread_safety
ora mi è più chiaro
Unrue è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta DLSS 4.5: con Dynamic Frame Generation e MFG 6X ...
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC Radeon RX 9070 GRE, AMD la porta in tutto il mon...
La Commissione europea taglia le bollett...
Halo: Campaign Evolved, annunciata la da...
TIM, rincari da luglio: come evitare l'a...
Sega rilancia Crazy Taxi con World Tour:...
Pagare per avere meno: Brave Origin vuol...
L'italiana Bending Spoons sbarca a Wall ...
Have I Been Pwned tocca quota 1000 data ...
Microsoft conferma la nuova uscita di Fa...
WWDC 2026 è oggi: come seguire il keynot...
L'IA cambia Internet: i bot superano il ...
DeepSeek V4 Pro supera GPT 5.5 Pro: nei ...
Destiny 2 sta per morire, la community s...
Microsoft cede: la ricerca di Windows 11...
Dopo quasi 30 anni, l'originale Thief di...
ASML è l'azienda più prezi...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:25.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v