Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 30344|Odpoveď: 2

[Zdroj] C# poistka závitu so zámkom

[Kopírovať odkaz]
Zverejnené 13. 6. 2016 17:26:25 | | |

Ak je váš kód v procese, ktorý má viacero vlákien bežiacich súčasne, môže bežať kód súčasne. Ak je výsledok každého behu rovnaký ako výsledok jedného vlákna a hodnoty ostatných premenných sú rovnaké ako očakávané, je to bezpečné pre vlákno.
Inými slovami, rozhranie poskytované triedou alebo programom je atómové pre vlákna a prepínanie medzi viacerými vláknami nevedie k nejasnostiam vo výsledku vykonávania rozhrania, čo znamená, že nemusíme uvažovať o synchronizácii.
Problémy s bezpečnosťou vlákien spôsobujú globálne aj statické premenné.
Ak má každé vlákno iba operácie čítania pre globálne a statické premenné, ale žiadne operácie zápisu, vo všeobecnosti je táto globálna premenná bezpečná pre vlákna; Ak viacero vlákien vykonáva čítanie a zápis na premennú súčasne, zvyčajne je potrebná synchronizácia vlákien, inak môže ovplyvniť bezpečnosť vlákien.

Účelom zámku je zabrániť súbežným operáciám pri viacvláknovom vykonávaní a objekty referenčného typu zámku umožňujú v uzamknutej oblasti pracovať naraz len jedno vlákno.

Zámok môže zamknúť iba jednu referenčnú typovú premennú, teda zablokovať adresu




Existuje rozdiel medzi výsledkami behu s a bez zámku:

Po uzamknutí: hodnota i klesá jeden po druhom, nebudú žiadne skoky, žiadny opakovaný výstup, až kým hodnota 0 nedosiahne;

Žiadny zámok: výstup hodnoty i skočí, nespojitý klesá a môže mať aj výstup -1;

Dôvod: Po pridaní zámku môže kód v uzamknutej oblasti vykonávať naraz len jedno vlákno a obe vlákna sa vykonávajú v poradí, takže výstup nebude prerušovaný.




Predchádzajúci:Používateľ zrušený z dialógu ukladania (MS Visual Database Tools)
Budúci:Pekná trieda DBHelper, ktorá vykonáva uložené procedúry
Zverejnené 14. 6. 2016 10:53:36 |
 Prenajímateľ| Zverejnené 10. 2. 2022 9:18:58 |
.NET/C# Lock Principle Monitor poskytuje podrobné vysvetlenie
https://www.itsvse.com/thread-9633-1-1.html
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com