Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 30344|Răspunde: 2

[Sursă] Siguranța filetului C# cu blocare

[Copiază linkul]
Postat pe 13.06.2016 17:26:25 | | |

Dacă codul tău se află într-un proces care are mai multe fire de execuție în același timp, este posibil să ruleze codul în același timp. Dacă rezultatul fiecărei rulări este același cu cel al unui singur fir de execuție, iar valorile celorlalte variabile sunt aceleași așa cum era de așteptat, este sigur pentru fire.
Cu alte cuvinte, interfața oferită de o clasă sau program este atomică pentru fire sau comutarea între mai multe fire nu duce la ambiguitate în rezultatul execuției interfeței, ceea ce înseamnă că nu trebuie să luăm în considerare sincronizarea.
Problemele de siguranță ale firului sunt cauzate atât de variabile globale, cât și statice.
Dacă fiecare fir are doar operații de citire pentru variabile globale și variabile statice, dar fără operațiuni de scriere, în general această variabilă globală este sigură pentru thread; Dacă mai multe fire efectuează simultan operațiuni de citire și scriere asupra unei variabile, sincronizarea firelor este în general necesară, altfel poate afecta securitatea firului.

Scopul blocării este de a preveni operațiunile concurente atunci când execuția este multi-threaded, iar obiectele de tip de referință permit operarea unui singur fir simultan în zona sa blocată.

Blocarea poate bloca doar o singură variabilă de tip referință, adică blocarea unei adrese




Există o diferență între rezultatele alergării cu și fără blocare:

După blocare: valoarea lui i va scădea una câte una, nu vor mai exista salturi sau ieșiri repetate, până la valoarea de 0;

Fără blocare: valoarea de ieșire a lui i va sări, va scădea discontinuu și poate avea și o valoare de ieșire de -1;

Motiv: După adăugarea unui blocaj, doar un singur fir poate executa codul din zona blocată la un moment dat, iar ambele fire sunt executate în ordine, deci nu va exista o ieșire întreruptă.




Precedent:Utilizatorul anulat din dialogul de salvare (MS Visual Database Tools)
Următor:O clasă DBHelper bună care execută proceduri stocate
Postat pe 14.06.2016 10:53:36 |
 Proprietarul| Postat pe 10.02.2022 09:18:58 |
.NET/C# Monitor de principiu de blocare oferă o explicație detaliată
https://www.itsvse.com/thread-9633-1-1.html
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com