Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 17802|Odpověď: 0

[Komunikace] zámek C #

[Kopírovat odkaz]
Zveřejněno 21.02.2019 9:43:39 | | |
1. Proč zamykat a co je zamčené?

Když používáme vlákna, nejefektivnější je samozřejmě asynchronní, tedy každé vlákno běží současně, aniž by se na sebe spoléhalo a čekalo. Když však různá vlákna potřebují přístup k určitému zdroji, je potřeba synchronizační mechanismus, tedy při čtení a zápisu stejného zdroje je potřeba, aby zdroj operoval pouze jeden vlákno současně, aby byla každá operace efektivní a okamžitá, tedy aby byla zajištěna atomovost jejího provozu. lock je nejčastěji používaná metoda synchronizace v C#, ve formátu lock(objectA){codeB}.


lock(objectA){codeB} se zdá jednoduchý, ale ve skutečnosti má tři významy, což je zásadní pro správné použití:
1. Je objektA zamčen? Pokud ne, zamknu ho, jinak počkám, až bude objekt A uvolněn.
2. Po uzamčení nemohou ostatní vlákna volat kód B ani používat objektA během provádění kódu B.
3. Po spuštění kódu B mohou být uvolněné objekty A a kódy B přístupné jinými vlákny.

2. Co se stalo s zámkem (tímto)?

Podívejme se na příklad:

V vlákně t1 LockMe volá lock(this), tedy c1 v hlavní funkci, a při volání lock(c1) v hlavním vlákně musí počkat, až bude lock block v t1 vykonán, než přistupuje k c1, tedy všechny operace související s c1 nelze dokončit, takže vidíme, že i c1. DoNotLockMe() není vykonávána.





Předchozí:C# v části pole ArraySegment
Další:Hloubková praxe Spring Bootu. Chen Shaojian a SpringBoot odhalují + rychle vybudují mikroservisní systém
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com