Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 30344|Odgovoriti: 2

[Vir] C# varovalka navoja z zaklepom

[Kopiraj povezavo]
Objavljeno na 13. 06. 2016 17:26:25 | | |

Če je vaša koda v procesu, kjer teče več niti hkrati, lahko teče koda hkrati. Če je rezultat vsakega zagona enak kot rezultat posamezne niti in so vrednosti drugih spremenljivk enake pričakovanim, je to varno za nit.
Z drugimi besedami, vmesnik, ki ga zagotavlja razred ali program, je atomski za niti ali pa preklapljanje med več nitmi ne povzroča dvoumnosti v izvedbi vmesnika, kar pomeni, da ni treba upoštevati sinhronizacije.
Težave z varnostjo niti povzročajo tako globalne kot statične spremenljivke.
Če ima vsaka nit le operacije branja za globalne in statične spremenljivke, vendar brez operacij pisanja, je ta globalna spremenljivka na splošno varna za niti (thread-safe); Če več niti hkrati izvaja operacije branja in pisanja na spremenljivki, je običajno potrebna sinhronizacija niti, sicer lahko vpliva na varnost niti.

Namen zaklepanja je preprečiti sočasne operacije pri večnitnem izvajanju, objekti referenčnega tipa zaklepa pa omogočajo, da v svojem zaklenjenem območju hkrati deluje le ena nit.

Lock lahko zaklene le eno referenčno tip spremenljivke, torej zaklene naslov




Obstaja razlika med rezultati teka z zaklepanjem in brez njega:

Po zaklepanju: vrednost i se bo zniževala eno za drugo, ne bo preskokov, ne bo ponavljajočih se izhodov, dokler ne doseže vrednosti 0;

Brez zaklepanja: izhodna vrednost i bo skakala, diskontinuirana padajoča in lahko ima tudi izhod vrednosti -1;

Razlog: Po dodajanju zaklepa lahko kodo v zaklenjenem območju hkrati izvaja le ena nit, obe niti pa se izvajata v zaporedju, zato ne bo prekinjenega izhoda.




Prejšnji:Uporabnik preklican iz dialoga za shranjevanje (MS Visual Database Tools)
Naslednji:Lep razred DBHelper, ki izvaja shranjene postopke
Objavljeno na 14. 06. 2016 10:53:36 |
 Najemodajalec| Objavljeno na 10. 02. 2022 09:18:58 |
.NET/C# Lock Principle Monitor ponuja poglobljeno razlago
https://www.itsvse.com/thread-9633-1-1.html
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com