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

Näkymä: 30344|Vastaus: 2

[Lähde] C# kierteen turvamekanismi lukolla

[Kopioi linkki]
Julkaistu 13.6.2016 17.26.25 | | |

Jos koodisi on prosessissa, jossa useita säikeitä pyörii samanaikaisesti, se saattaa ajaa koodia samaan aikaan. Jos jokaisen suorituksen tulos on sama kuin yksittäisellä säikeellä ja muiden muuttujien arvot ovat odotetut samat, se on säiketurvallinen.
Toisin sanoen, luokan tai ohjelman tarjoama rajapinta on atominen säikeille tai useiden säikeiden välillä vaihtaminen ei aiheuta epäselvyyttä rajapinnan suoritustuloksessa, mikä tarkoittaa, ettei synkronointia tarvitse harkita.
Säikeiden turvallisuusongelmat johtuvat sekä globaaleista että staattisista muuttujista.
Jos jokaisessa säikeessä on lukuoperaatioita vain globaaleille muuttujille ja staattisille muuttujille, mutta ei kirjoitusoperaatioita, yleisesti ottaen tämä globaali muuttuja on säikeiden turvallinen; Jos useampi säike suorittaa luku- ja kirjoitustoimintoja muuttujalle samanaikaisesti, säikeiden synkronointi on yleensä tarpeen, muuten se voi vaikuttaa säikeen turvallisuuteen.

Lukituksen tarkoituksena on estää samanaikaiset operaatiot monisäikeisessä suorituksessa, ja viitelukon objektit sallivat vain yhden säikeen toimimisen kerrallaan lukitulla alueellaan.

Lock voi lukita vain yhden referenssityyppimuuttujan, eli lukita osoitteen




Lukituksen kanssa ja ilman juoksun tuloksissa on ero:

Lukituksen jälkeen: i:n arvo laskee yksi kerrallaan, hyppyjä ei tapahdu, ei toistuvia tuloksia, kunnes arvo on 0;

Ei lukkoa: i:n lähtöarvo hyppää, epäjatkuva laskee, ja voi myös olla -1 lähtöarvo;

Syy: Lukituksen lisäämisen jälkeen vain yksi säie voi suorittaa koodin lukitulla alueella kerrallaan, ja molemmat säikeet suoritetaan järjestyksessä, joten keskeytettyä tulosta ei ole.




Edellinen:Käyttäjän peruutus tallennuskeskustelusta (MS Visual Database Tools)
Seuraava:Hyvä DBHelper-luokka, joka suorittaa tallennettuja proseduureja
Julkaistu 14.6.2016 10.53.36 |
 Vuokraisäntä| Julkaistu 10.2.2022 9.18.58 |
.NET/C# Lock Principle Monitor tarjoaa perusteellisen selityksen
https://www.itsvse.com/thread-9633-1-1.html
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