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

Pogled: 17802|Odgovoriti: 0

[Komunikacija] zaklep C #

[Kopiraj povezavo]
Objavljeno na 21. 02. 2019 09:43:39 | | |
1. Zakaj zaklepati in kaj je zaklenjeno?

Ko uporabljamo niti, je najučinkovitejši način seveda asinhron, torej vsaka nit teče hkrati, brez zanašanja ena na drugo in čakanja. Vendar pa, ko različne niti potrebujejo dostop do določenega vira, je potreben sinhronizacijski mehanizem, torej pri branju in zapisovanju istega vira moramo zagotoviti, da vir deluje le z eno nitjo hkrati, da zagotovimo učinkovitost in takojšnjo delovanje vsake operacije, torej atomovost njenega delovanja. lock je najpogosteje uporabljena metoda sinhronizacije v C#, v formatu lock(objectA){codeB}.


lock(objectA){codeB} se zdi preprost, vendar ima v resnici tri pomene, kar je bistveno za ustrezno uporabo:
1. Ali je objektA zaklenjen? Če ne, ga zaklenem, sicer počakam, da se objekt A sprosti.
2. Po zaklepanju druge niti ne morejo klicati kode B ali uporabljati objekta A med izvajanjem kode B.
3. Po izvedbi kode B lahko druge niti dostopajo do sprostitvenih objektov A in kode B.

2. Kaj se je zgodilo s ključavnico (to)?

Poglejmo primer:

V t1 niti LockMe kliče lock(this), torej c1 v glavni funkciji, in ko kliče lock(c1) v glavni niti, mora počakati, da se lock block v t1 izvede, preden dostopa do c1, torej nobenih operacij, povezanih s c1, ni mogoče dokončati, zato vidimo, da celo c1. DoNotLockMe() se ne izvrši.





Prejšnji:C# v ArraySegment delu polja
Naslednji:Poglobljena praksa Spring Boota. Chen Shaojian in SpringBoot razkrivata + hitro zgradita mikroservisni sistem
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