Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 17802|Vastaus: 0

[Viestintä] lukko C #

[Kopioi linkki]
Julkaistu 21.2.2019 9.43.39 | | |
1. Miksi lukita ja mikä on lukittu?

Kun käytämme säikeitä, tehokkain tapa on tietenkin asynkroninen, eli jokainen säie pyörii samaan aikaan ilman toisiinsa luottamista ja odottamista. Kuitenkin, kun eri säikeiden täytyy päästä tiettyyn resurssiin, tarvitaan synkronointimekanismi, eli kun luetaan ja kirjoitetaan samaa resurssia, resurssi tulee operoida vain yhdellä säikeellä samanaikaisesti, jotta jokainen operaatio on tehokas ja välitön, eli varmistetaan sen toiminnan atomisyys. lukko on yleisimmin käytetty synkronointimenetelmä C#:ssa, muodossa lock(objectA){codeB}.


lock(objectA){codeB} vaikuttaa yksinkertaiselta, mutta sillä on itse asiassa kolme merkitystä, mikä on olennaista sen asianmukaiseen käyttöön:
1. Onko objektiA lukittu? Jos ei, lukitsen sen, muuten odotan, että objekti A vapautuu.
2. Lukituksen jälkeen muut säikeet eivät voi kutsua codeB:tä tai käyttää objectA:ta codeB:n suorittamisen aikana.
3. CodeB:n suorittamisen jälkeen vapauta objectA ja codeB:hen pääsevät käsiksi muiden säikeiden kautta.

2. Mitä tapahtui lukitukselle (tälle)?

Katsotaanpa esimerkkiä:

t1-säikeessä LockMe kutsuu lock(this) eli c1:tä pääfunktiossa, ja kun kutsutaan lock(c1) pääsäikeessä, sen täytyy odottaa, että lock block t1:ssä suoritetaan ennen kuin pääsee c1:een, eli kaikkia c1:een liittyviä operaatioita ei voida suorittaa, joten näemme, että jopa c1. DoNotLockMe() ei suoriteta.





Edellinen:C# ArraySegmentissä, joka on osa taulukkoa
Seuraava:Spring Bootin syvällinen harjoittelu. Chen Shaojian ja SpringBoot paljastavat + rakentavat nopeasti mikropalvelujärjestelmän
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com