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

Utsikt: 30344|Svar: 2

[Källa] C# gängsäkring med lås

[Kopiera länk]
Publicerad på 2016-06-13 17:26:25 | | |

Om din kod är i en process som har flera trådar igång samtidigt, kan den köra koden samtidigt. Om resultatet av varje körning är detsamma som för en enskild tråd, och värdena för andra variabler är desamma som förväntat, är det trådsäkert.
Med andra ord är gränssnittet som tillhandahålls av en klass eller ett program atomärt för trådar eller att byta mellan flera trådar leder inte till tvetydighet i gränssnittets exekveringsresultat, vilket innebär att vi inte behöver ta hänsyn till synkronisering.
Trådsäkerhetsproblem orsakas av både globala och statiska variabler.
Om varje tråd endast har läsoperationer för globala variabler och statiska variabler, men inga skrivoperationer, är denna globala variabel generellt sett trådsäker; Om flera trådar utför läs- och skrivoperationer på en variabel samtidigt krävs vanligtvis trådsynkronisering, annars kan det påverka trådsäkerheten.

Syftet med låset är att förhindra samtidiga operationer vid multitrådad exekvering, och objekt av referenstypen lås tillåter endast en tråd åt gången i sitt låsta område.

Lock kan bara låsa en referenstypvariabel, det vill säga låsa en adress




Det finns en skillnad mellan resultaten av att köra med och utan låsning:

Efter låsning: värdet på i minskar en efter en, inga hopp, ingen upprepad utmatning, tills värdet 0;

Ingen låsning: värdeutgången av i hoppar, avtar diskontinuerligt, och kan även ha ett -1-värde utdata;

Anledning: Efter att ha lagt till ett lås kan endast en tråd exekvera koden i det låsta området åt gången, och båda trådarna körs i ordning, så det blir ingen avbruten utdata.




Föregående:Användaren avbröt sparningsdialogen (MS Visual Database Tools)
Nästa:En trevlig DBHelper-klass som kör lagrade procedurer
Publicerad på 2016-06-14 10:53:36 |
 Hyresvärd| Publicerad på 2022-02-10 09:18:58 |
.NET/C# Lock Principle Monitor ger en djupgående förklaring
https://www.itsvse.com/thread-9633-1-1.html
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