See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 30344|Vastuse: 2

[Allikas] C# keermeohutus lukustusega

[Kopeeri link]
Postitatud 13.06.2016 17:26:25 | | |

Kui su kood on protsessis, kus töötab korraga mitu lõime, võib see koodi korraga käivitada. Kui iga jooksu tulemus on sama mis ühe lõime tulemus ja teiste muutujate väärtused on samad nagu oodatud, on see lõimele ohutu.
Teisisõnu, klassi või programmi poolt pakutav liides on lõimede jaoks atomiline või mitme lõime vahel vahetamine ei põhjusta liidese täitmise tulemuses ebamäärasust, mis tähendab, et sünkroniseerimist ei pea arvestama.
Lõime ohutuse probleemid on põhjustatud nii globaalsetest kui ka staatilistest muutujatest.
Kui igas lõimes on lugemistoimingud ainult globaalsete muutujate ja staatiliste muutujate jaoks, kuid kirjutamistoiminguid pole, siis üldiselt on see globaalne muutuja lõimekindel; Kui mitu lõime teostavad samaaegselt ühe muutuja lugemis- ja kirjutamistoiminguid, on lõimede sünkroniseerimine üldiselt vajalik, vastasel juhul võib see mõjutada lõime turvalisust.

Lukustuse eesmärk on takistada samaaegseid operatsioone mitmelõimelise täitmise korral ning viiteluku tüüpi objektid lubavad lukustatud alal korraga töötada ainult ühel lõimel.

Lock saab lukustada ainult ühe viitetüübi muutuja, st aadressi lukustada




Lukustusega ja ilma jooksu tulemustel on erinevus:

Pärast lukustamist: i väärtus väheneb ükshaaval, hüppeid ei toimu, ei korduvat väljundit, kuni väärtuseni 0;

Lukustus puudub: i väljundväärtus hüppab, katkestatud väheneb ja võib olla ka -1 väljundiga;

Põhjus: Pärast lukustuse lisamist saab korraga ainult üks lõim koodi lukustatud alal täita ning mõlemad lõimed täidetakse järjekorras, seega katkestatud väljundit ei toimu.




Eelmine:Kasutaja tühistatud salvestusdialoogist (MS Visual Database Tools)
Järgmine:Hea DBHelper klass, mis käivitab salvestatud protseduure
Postitatud 14.06.2016 10:53:36 |
 Üürileandja| Postitatud 10.02.2022 09:18:58 |
.NET/C# luku põhimõtte monitor annab põhjaliku selgituse
https://www.itsvse.com/thread-9633-1-1.html
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com