See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 49134|Vastuse: 4

[Allikas] .NET/C# luku põhimõtte monitor annab põhjaliku selgituse

[Kopeeri link]
Postitatud 29.04.2021 09:54:10 | | | |
Lukustuslause võtab antud objekti muteksi, täidab lauseploki ja vabastab luku. Lukku hoides saab luku hoidev niit luku uuesti kätte ja vabastada. Kõik teised lõimed blokeeritakse lukku saamast ja ootavad, kuni lukk avaneb.

Läbivaatamine:

.net/c# Kasutaja mitmelõimeline samaaegsus lock(string){...} Üksikasjalik selgitus
https://www.itsvse.com/thread-7764-1-1.html

Kasuta lukukoodi

Ekvivalentne

Võib arvata, et Locki aluseks oleva koodi rakendab Monitor.

Kuna kood kasutab proovi... lõplik blokeering, nii et isegi kui lukustuslause kehas on erand, vabastatakse lukk.

Sa ei saa kasutada await operaatori lukustust avalduse põhiosas.Seda ei saa kasutada avalduse põhiosasootaOperaatorilukk。 Sa ei saa kasutada await operaatori lukustust avalduse põhiosas. Sa ei saa kasutada await operaatori lukustust avalduse põhiosas. See lause on väga oluline!

Dokumentatsioon:Hüperlingi sisselogimine on nähtav.

Testin koodi ise,Kasuta Taski lukustamiseks ja oota blokeerimiseks, kood on järgmine:

Pärast järgmise koodi mitmekordset käivitamist ei ole täitmise tulemus ootuspärane.



Miks? Kui proovite kasutada await märksõna lukustusplokis, saad selle kompileerimisvea: cannot await lukustuslause kehas kasutada. Põhjus on selles, et pärast ootamise lõpetamist võib meetod töötada teises lõimes, mitte lõimes (kutsub lõime) enne await märksõna.lockkeywordSama teemaLukusta ja vabasta lukk lukku
Muuda koodi, et näha põhjust intuitiivsemalt:

Võta luku keerme ID ja luku vabastaja keerme ID,Ilmselgelt mitte mingil teemal, seega ei saa lukku edukalt vabastada, nagu alloleval joonisel näidatud:



Proovisin koodi muuta, testisin lõimega, käivitasin mitu korda ja see töötas ootuspäraselt, kood on järgmine:



(Lõpp)





Eelmine:(to).NET/C#, et pakendada kaust zip-faili
Järgmine:Redis kasutab üksikasjalike selgituste jaoks Lua skripte
 Üürileandja| Postitatud 10.02.2022 09:20:09 |

Ära lase lukku lahti





 Üürileandja| Postitatud 25.06.2023 19:57:43 |
Objektide sünkroniseerimise meetod kutsuti välja sünkroniseerimata koodiplokist.
Järgmine kood annab vea nagu eespool




 Üürileandja| Postitatud 12.08.2023 19:47:49 |
luku süntaks sugar, nagu allpool näidatud:






 Üürileandja| Postitatud 11.07.2024 10:44:02 |
【Turn】C# mitmelõimeline samaaegsus erinevate lukustuste all
https://www.itsvse.com/thread-10561-1-1.html
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com