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

Pogled: 49134|Odgovoriti: 4

[Vir] .NET/C# Lock Principle Monitor ponuja poglobljeno razlago

[Kopiraj povezavo]
Objavljeno na 29. 04. 2021 09:54:10 | | | |
Zaporni ukaz vzame mutex določenega objekta, izvede blok ukaza in nato sprosti zaklep. Ko držite ključavnico, lahko nit, ki drži ključavnico, ponovno zagrabi in sprosti ključavnico. Vsaka druga nit je blokirana, da ne dobi ključavnice, in čaka, da se ključavnica sprosti.

Pregled:

.net/c# Uporabniški večnitni zaklep sočasnosti (string){...} Podrobna razlaga
https://www.itsvse.com/thread-7764-1-1.html

Uporabi kodo za ključavnico

Ekvivalent

Lahko se domneva, da je osnovna koda Lock implementirana v Monitorju.

Ker koda uporablja poskus... Finalblock, tako da tudi če je izjema vržena v telo zaklepa, je zaklep sproščen.

V telesu stavka ne morete uporabiti zaklepa await operator.Ne morete ga uporabiti v besedilu izjavepočakajOperator lock。 V telesu stavka ne morete uporabiti zaklepa await operator. V telesu stavka ne morete uporabiti zaklepa await operator. Ta stavek je zelo pomemben!

Dokumentacija:Prijava do hiperpovezave je vidna.

Kodo preizkusim sam,Uporabi Nalogo za zaklepanje in počakaj za blokiranje, koda je naslednja:

Po večkratnem izvajanju naslednje kode rezultat izvajanja ni takšen, kot je bilo pričakovano.



Zakaj? Če poskušate uporabiti ključno besedo 'čakaj' pri uporabi ključne besede 'čakaj' v bloku zaklepa, boste dobili to napako pri prevajanju: ne moremo počakati v telesu stavka zaklepa. Razlog je, da se po zaključku čakanja metoda lahko izvaja v drugi niti namesto v niti (klic niti) pred ključno besedo čakaj.lockkeywordIsta temaZakleni in sprosti zaklep v ključavnici
Spremenite kodo, da boste razlog videli bolj intuitivno:

Pridobi nit id ključavnice in nit sprostitve ključavnice,Seveda ne na temi, zato zaklepa ni mogoče uspešno sprostiti, kot je prikazano na spodnji sliki:



Poskusil sem spremeniti kodo, testiral z nitjo, večkrat izvedel in je delovalo kot pričakovano, koda je naslednja:



(Konec)





Prejšnji:(to).NET/C# za pakiranje mape v zip datoteko
Naslednji:Redis uporablja pisavo Lua za podrobne razlage
 Najemodajalec| Objavljeno na 10. 02. 2022 09:20:09 |

Ne sprosti ključavnice





 Najemodajalec| Objavljeno na 25. 06. 2023 19:57:43 |
Metoda sinhronizacije objektov je bila klicana iz nesinhroniziranega bloka kode.
Naslednja koda bo dala napako, kot je zgoraj navedeno




 Najemodajalec| Objavljeno na 12. 08. 2023 19:47:49 |
Sladkor v sintaksi ključavnice, kot je prikazano spodaj:






 Najemodajalec| Objavljeno na 11. 07. 2024 10:44:02 |
【Turn】C# večnitna sočasnost pod različnimi ključavnicami
https://www.itsvse.com/thread-10561-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