Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 17802|Svare: 0

[Kommunikasjon] Sluse C #

[Kopier lenke]
Publisert på 21.02.2019 09:43:39 | | |
1. Hvorfor låse, og hva er låst?

Når vi bruker tråder, er den mest effektive måten selvfølgelig asynkron, det vil si at hver tråd kjører samtidig, uten å være avhengige av hverandre og vente. Men når ulike tråder trenger tilgang til en viss ressurs, kreves en synkroniseringsmekanisme, det vil si at når man leser og skriver samme ressurs, må ressursen kun opereres av én tråd samtidig for å sikre at hver operasjon er effektiv og umiddelbar, det vil si for å sikre atomiciteten i dens operasjon. lock er den mest brukte synkroniseringsmetoden i C#, i formatet lock(objectA){codeB}.


lock(objectA){codeB} virker enkelt, men har faktisk tre betydninger, noe som er essensielt for å bruke det riktig:
1. Er objektA låst? Hvis ikke, låser jeg den, ellers venter jeg til objektA er frigitt.
2. Etter låsing kan ikke andre tråder kalle kodeB eller bruke objektA under utførelsen av kodeB.
3. Etter å ha kjørt kodeB, frigjør objektA, og kodeB kan nås av andre tråder.

2. Hva skjedde med låsen(denne)?

La oss se på et eksempel:

I t1-tråden kaller LockMe lock(this), det vil si c1 i hovedfunksjonen, og når lock(c1) kalles i hovedtråden, må den vente på at låseblokken i t1 skal utføres før den får tilgang til c1, det vil si at alle c1-relaterte operasjoner ikke kan fullføres, så vi ser at selv c1. DoNotLockMe() blir ikke utført.





Foregående:C# i ArraySegment-delen av arrayet
Neste:Grundig praksis på Spring Boot. Chen Shaojian og SpringBoot avslører + bygg raskt et mikrotjenestesystem
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com