Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 30344|Atsakyti: 2

[Šaltinis] C# sriegio sauga su užraktu

[Kopijuoti nuorodą]
Paskelbta 2016-06-13 17:26:25 | | |

Jei jūsų kodas yra procese, kuriame vienu metu veikia kelios gijos, gali būti, kad jis paleidžia kodą tuo pačiu metu. Jei kiekvieno paleidimo rezultatas yra toks pat kaip vienos gijos, o kitų kintamųjų reikšmės yra tokios pačios, kaip tikėtasi, jis yra saugus gijai.
Kitaip tariant, klasės ar programos teikiama sąsaja yra atominė gijoms arba perjungimas tarp kelių gijų nesukelia dviprasmiškumo sąsajos vykdymo rezultate, o tai reiškia, kad mums nereikia svarstyti sinchronizavimo.
Sriegių saugos problemas sukelia tiek globalūs, tiek statiniai kintamieji.
Jei kiekviena gija turi tik globalių kintamųjų ir statinių kintamųjų skaitymo operacijas, bet nėra rašymo operacijų, paprastai kalbant, šis globalus kintamasis yra saugus gijai; Jei kelios gijos vienu metu atlieka kintamojo skaitymo ir rašymo operacijas, paprastai reikalingas gijų sinchronizavimas, kitaip tai gali turėti įtakos gijų saugumui.

Užrakto tikslas yra užkirsti kelią vienalaikėms operacijoms, kai vykdomas kelių gijų vykdymas, o etaloninio užrakto tipo objektai leidžia vienu metu veikti tik vienai gijai užrakintoje srityje.

Užraktas gali užrakinti tik vieną nuorodos tipo kintamąjį, tai yra, užrakinti adresą




Yra skirtumas tarp bėgimo su užraktu ir be jo rezultatų:

Po užrakinimo: i reikšmė mažės po vieną, nebus šuolių, nebus pakartotinės išvesties, kol bus 0;

Nėra užrakto: i vertės išvestis šokinės, nepertraukiamai mažės, taip pat gali turėti -1 reikšmės išvestį;

Priežastis: Pridėjus užraktą, tik viena gija vienu metu gali vykdyti kodą užrakintoje srityje, o abi gijos vykdomos eilės tvarka, todėl nebus nutrauktos išvesties.




Ankstesnis:Vartotojas atšauktas iš įrašymo dialogo (MS Visual Database Tools)
Kitą:Graži DBHelper klasė, kuri vykdo saugomas procedūras
Paskelbta 2016-06-14 10:53:36 |
 Savininkas| Paskelbta 2022-02-10 09:18:58 |
.NET/C# užrakto principo monitorius pateikia išsamų paaiškinimą
https://www.itsvse.com/thread-9633-1-1.html
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com