Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 17802|Odpoveď: 0

[Komunikácia] zámok C #

[Kopírovať odkaz]
Zverejnené 21. 2. 2019 9:43:39 | | |
1. Prečo zamknúť a čo je zamknuté?

Keď používame vlákna, najefektívnejší spôsob je samozrejme asynchrónny, teda každé vlákno beží súčasne, bez toho, aby sa navzájom spoliehali a čakali. Avšak keď rôzne vlákna potrebujú prístup k určitému zdroju, je potrebný synchronizačný mechanizmus, teda pri čítaní a zápise toho istého zdroja musíme zabezpečiť, aby zdroj operoval len jeden vlákno naraz, aby sme zabezpečili, že každá operácia je efektívna a okamžitá, teda aby sa zabezpečila atomicita jej fungovania. lock je najčastejšie používaná metóda synchronizácie v C#, vo formáte lock(objectA){codeB}.


lock(objectA){codeB} sa zdá jednoduchý, ale v skutočnosti má tri významy, ktoré sú nevyhnutné pre jeho správne použitie:
1. Je objektA zamknutý? Ak nie, zamknem ho, inak počkám, kým sa uvoľní objekt A.
2. Po uzamknutí ostatné vlákna nemôžu volať kódB ani používať objektA počas vykonávania kódu B.
3. Po vykonaní kódu B môžu iné vlákna pristupovať k uvoľneniu objektu A a kódu B.

2. Čo sa stalo so zámkom (týmto)?

Pozrime sa na príklad:

V t1 vlákne LockMe volá lock(this), teda c1 v hlavnej funkcii, a pri volaní lock(c1) v hlavnom vlákne musí počkať, kým sa lockblock v t1 vykoná, aby mohol pristupovať k c1, teda všetky operácie súvisiace s c1 nemôžu byť dokončené, takže vidíme, že aj c1. DoNotLockMe() nie je vykonaný.





Predchádzajúci:C# v časti ArraySegment poľa
Budúci:Hĺbková prax Spring Boot. Chen Shaojian a SpringBoot odhaľujú + rýchlo vybudujú mikroservisný systém
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com