Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 30344|Odpověď: 2

[Zdroj] C# pojistka závitu s zámkem

[Kopírovat odkaz]
Zveřejněno 13.06.2016 17:26:25 | | |

Pokud je váš kód v procesu, který má více vláken běžících současně, může být běžící současně. Pokud je výsledek každého běhu stejný jako výsledek jednoho vlákna a hodnoty ostatních proměnných jsou stejné jako očekávané, je to vlákno bezpečné.
Jinými slovy, rozhraní poskytované třídou nebo programem je atomické pro vlákna, nebo přepínání mezi více vlákny nevede k nejednoznačnosti ve výsledku spuštění rozhraní, což znamená, že není třeba uvažovat o synchronizaci.
Problémy s bezpečností vláken jsou způsobeny jak globálními, tak statickými proměnnými.
Pokud má každé vlákno pouze operace čtení globálních a statických proměnných, ale žádné zápisové operace, obecně je tato globální proměnná bezpečná pro vlákna; Pokud více vláken provádí čtení a zápis na proměnnou současně, je obvykle nutná synchronizace vláken, jinak může ovlivnit bezpečnost vláken.

Účelem zámku je zabránit souběžným operacím při vícevláknovém provádění a objekty referenčního typu zámku umožňují současně v jeho uzamčené oblasti pracovat pouze jedno vlákno.

Zámek může uzamknout pouze jednu proměnnou referenčního typu, tedy uzamknout adresu




Existuje rozdíl mezi výsledky běhu s a bez zámku:

Po uzamčení: hodnota i se bude snižovat jeden po druhém, nebudou žádné skoky, žádný opakovaný výstup, dokud hodnota 0 nedosáhne;

Žádný zámek: výstup hodnoty i bude skákat, nespojitý pokles a může mít také výstup -1;

Důvod: Po přidání zámku může kód v zamčené oblasti vykonat pouze jedno vlákno a obě vlákna se spouštějí v pořadí, takže výstup není přerušen.




Předchozí:Uživatel zrušen z dialogu ukládání (MS Visual Database Tools)
Další:Pěkná třída DBHelper, která spouští uložené procedury
Zveřejněno 14.06.2016 10:53:36 |
 Pronajímatel| Zveřejněno 10.02.2022 9:18:58 |
.NET/C# Monitor principů zámků poskytuje podrobné vysvětlení
https://www.itsvse.com/thread-9633-1-1.html
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com