Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 49134|Atsakyti: 4

[Šaltinis] .NET/C# užrakto principo monitorius pateikia išsamų paaiškinimą

[Kopijuoti nuorodą]
Paskelbta 2021-04-29 09:54:10 | | | |
Užrakto sakinys paima tam tikro objekto muteksą, vykdo sakinio bloką ir atleidžia užraktą. Laikant spyną, spyną laikantis sriegis gali įgyti ir vėl atlaisvinti užraktą. Bet koks kitas siūlas yra užblokuotas nuo užrakto ir laukia, kol užraktas bus atleistas.

Peržiūra:

.net/c# Vartotojo kelių gijų sutapimo užraktas (eilutė){...} Išsamus paaiškinimas
https://www.itsvse.com/thread-7764-1-1.html

Naudokite užrakto kodą

Atitinka

Galima manyti, kad pagrindinį užrakto kodą įgyvendina monitorius.

Kadangi kodas naudoja pabandyti... finalblokas, taigi, net jei užrakto sakinio tekste yra išimtis, užraktas atleidžiamas.

Negalima naudoti laukimo operatoriaus užrakto pareiškimo tekste.Negalite jo naudoti pareiškimo tekstelauktioperatoriaus užraktas。 Negalima naudoti laukimo operatoriaus užrakto pareiškimo tekste. Negalima naudoti laukimo operatoriaus užrakto pareiškimo tekste. Šis sakinys yra labai svarbus!

Dokumentacija:Hipersaito prisijungimas matomas.

Aš pats išbandau kodą,Naudokite užduotį, kad gautumėte užraktą, ir naudokite laukti, kad užblokuotumėte, kodas yra toks:

Kelis kartus įvykdžius šį kodą, vykdymo rezultatas nėra toks, kokio tikėtasi.



Kodėl? Jei bandysite naudoti raktinį žodį laukti, kai bandysite naudoti raktinį žodį laukti užrakto bloke, gausite šią kompiliavimo klaidą: negalima laukti užrakto sakinio tekste. Priežastis ta, kad baigus laukti, metodas gali būti vykdomas kitoje gijoje, o ne gijoje, o ne gijoje.raktinis žodistas pats siūlasUžrakinkite ir atlaisvinkite spyną
Pakeiskite kodą, kad intuityviau pamatytumėte priežastį:

Gaukite spynos sriegio ID ir spynos atleidimo sriegio ID,Akivaizdu, kad ne ant gijos, todėl užrakto negalima sėkmingai atleisti, kaip parodyta paveikslėlyje žemiau:



Bandžiau modifikuoti kodą, išbandytas su gija, kelis kartus ir jis veikė taip, kaip tikėtasi, kodas yra toks:



(Pabaiga)





Ankstesnis:(į).NET/C#, kad supakuotumėte aplanką į ZIP failą
Kitą:Redis naudoja Lua scenarijus išsamiems paaiškinimams
 Savininkas| Paskelbta 2022-02-10 09:20:09 |

Neatleiskite užrakto





 Savininkas| Paskelbta 2023-06-25 19:57:43 |
Objekto sinchronizavimo metodas iškviestas iš nesinchronizuoto kodo bloko.
Šis kodas pateiks klaidą, kaip nurodyta aukščiau




 Savininkas| Paskelbta 2023-08-12 19:47:49 |
užrakinti sintaksės cukrų, kaip parodyta toliau:






 Savininkas| Paskelbta 2024-07-11 10:44:02 |
【Pasukti】 C# kelių gijų sutapimas po įvairiomis spynomis
https://www.itsvse.com/thread-10561-1-1.html
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com