Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 17802|Răspunde: 0

[Comunicare] Bloc C #

[Copiază linkul]
Postat pe 21.02.2019 09:43:39 | | |
1. De ce să încuie și ce este încuiat?

Când folosim fire, cea mai eficientă metodă este, desigur, asincronă, adică fiecare fir rulează în același timp, fără să se bazeze unul pe celălalt și să aștepte. Totuși, atunci când fire diferite trebuie să acceseze o anumită resursă, este necesar un mecanism de sincronizare, adică atunci când citim și scriem aceeași resursă, trebuie să facem ca resursa să fie operată simultan doar de un singur fir de execuție pentru a asigura că fiecare operație este eficientă și imediată, adică pentru a asigura atomicitatea funcționării sale. lock este cea mai frecvent folosită metodă de sincronizare în C#, în formatul lock(objectA){codeB}.


lock(objectA){codeB} pare simplu, dar de fapt are trei semnificații, ceea ce este esențial pentru a fi folosit corespunzător:
1. Este obiectul A blocat? Dacă nu, îl voi bloca, altfel aștept până când obiectul A este eliberat.
2. După blocare, alte fire nu pot chema codeB sau folosi obiectul A în timpul execuției coduluiB.
3. După executarea codului B, eliberarea obiectului A, iar codeB pot fi accesați prin alte fire de execuție.

2. Ce s-a întâmplat cu această încuietoare?

Să vedem un exemplu:

În firul t1, LockMe numește lock(this), adică c1 în funcția principală, iar când apelează lock(c1) în firul principal, trebuie să aștepte ca blocul de blocare din t1 să fie executat înainte de a accesa c1, adică toate operațiile legate de c1 nu pot fi finalizate, deci vedem că chiar și c1. DoNotLockMe() nu este executat.





Precedent:C# în ArraySegment, parte a tabloului
Următor:Practică aprofundată a Spring Boot. Chen Shaojian și SpringBoot dezvăluie + construiesc rapid un sistem de microservicii
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com