Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 17802|Svar: 0

[Kommunikation] sluss C #

[Kopiera länk]
Publicerad på 2019-02-21 09:43:39 | | |
1. Varför låsa och vad är låst?

När vi använder trådar är det mest effektiva sättet förstås asynkront, det vill säga att varje tråd körs samtidigt, utan att förlita sig på varandra och vänta. Men när olika trådar behöver åtkomst till en viss resurs krävs en synkroniseringsmekanism, det vill säga när man läser och skriver samma resurs måste resursen endast drivas av en tråd samtidigt för att säkerställa att varje operation är effektiv och omedelbar, det vill säga att säkerställa atomiciteten i dess funktion. lock är den mest använda synkroniseringsmetoden i C#, i formatet lock(objectA){codeB}.


lock(objectA){codeB} verkar enkelt, men har faktiskt tre betydelser, vilket är avgörande för att använda det på rätt sätt:
1. Är objektA låst? Om inte, låser jag den, annars väntar jag tills objektA släpps.
2. Efter låsning kan andra trådar inte anropa codeB eller använda objektA under exekveringen av codeB.
3. Efter exekvering av codeB, släpp objektA, och codeB kan nås av andra trådar.

2. Vad hände med låset (detta)?

Låt oss titta på ett exempel:

I t1-tråden anropar LockMe lock(this), det vill säga c1 i huvudfunktionen, och när lock(c1) anropas i huvudtråden måste den vänta på att lockblocket i t1 ska exekveras innan den kan komma åt c1, det vill säga alla c1-relaterade operationer kan inte slutföras, så vi ser att även c1. DoNotLockMe() körs inte.





Föregående:C# i ArraySegment-delen av arrayen
Nästa:Djupgående övning av Spring Boot. Chen Shaojian och SpringBoot avslöjar + bygg snabbt ett mikroservicesystem
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com