Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 17802|Válasz: 0

[Kommunikáció] C zár #

[Linket másol]
Közzétéve 2019. 02. 21. 9:43:39 | | |
1. Miért zárnak, és mi a zárva?

Amikor szálakat használunk, a leghatékonyabb módszer természetesen aszinkron, vagyis minden szál egyszerre fut, anélkül, hogy egymásra támaszkodnánk és várakoznának. Azonban, amikor különböző szálaknak egy adott erőforráshoz kell hozzáférniük, szinkronizációs mechanizmusra van szükség, vagyis amikor ugyanazt az erőforrást olvassuk és írjuk, akkor az erőforrást egyszerre csak egy szál működteti, hogy minden művelet hatékony és azonnali legyen, vagyis biztosítsuk a működés atomiosságát. a lock a leggyakrabban használt szinkronizációs módszer a C#-ban, a lock(objectA){codeB} formátumban.


a lock(objectA){codeB} egyszerűnek tűnik, de valójában három jelentése van, ami elengedhetetlen a megfelelő használathoz:
1. A tárgy zárva van? Ha nem, akkor lezárom, különben várom, amíg az objektumA megjelenik.
2. Zárolás után más szálak nem hívhatják a codeB-t vagy használhatják az objektumA-t a codeB végrehajtása során.
3. A codeB végrehajtása után a release objectA, és a codeB más szálak is elérhetők.

2. Mi történt ezzel?

Nézzünk egy példát:

A t1 szálban a LockMe a lock(this) hívja, azaz c1-et a fő függvényben, és amikor a lock(c1) hívást hívja a fő szálban, várnia kell, hogy a t1-ben lévő lock block végrehajtásra kerüljön, mielőtt elérné a c1-et, vagyis minden c1-hez kapcsolódó művelet nem teljesíthető, így még c1-et is látunk. A DoNotLockMe() nem kerül végrehajtásra.





Előző:C# a ArraySegment része a tömbben.
Következő:A Spring Boot mélyreható gyakorlása. Chen Shaojian és SpringBoot bemutatják + gyorsan építenek egy mikroszolgáltatási rendszert
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com