Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 30344|Отговор: 2

[Източник] C# резба предпазител с заключване

[Копирай линк]
Публикувано в 13.06.2016 г. 17:26:25 ч. | | |

Ако кодът ви е в процес, в който работят няколко нишки едновременно, може да се изпълнява кодът едновременно. Ако резултатът от всяко изпълнение е същият като този на една нишка, а стойностите на другите променливи са същите както се очаква, това е безопасно за нишка.
С други думи, интерфейсът, предоставен от клас или програма, е атомарен за нишки или превключването между множество нишки не води до неяснота в резултата от изпълнението на интерфейса, което означава, че не е необходимо да разглеждаме синхронизация.
Проблемите с безопасността на нишките се причиняват както от глобални, така и от статични променливи.
Ако всяка нишка има само операции за четене на глобални и статични променливи, но няма операции за запис, обикновено тази глобална променлива е безопасна за нишки; Ако няколко нишки извършват операции за четене и запис върху променлива едновременно, обикновено е необходима синхронизация на нишките, в противен случай това може да повлияе на сигурността на нишките.

Целта на заключването е да предотврати едновременни операции при многонишково изпълнение, а обекти от референтния тип заключване позволяват само една нишка да работи едновременно в заключената си зона.

заключването може да заключи само една референтна тип променлива, тоест да заключи адрес




Има разлика между резултатите от бягане с и без заключване:

След заключването: стойността на i ще намалява едно по едно, няма да има скокове, няма повтарящи се изходи, докато стойността е 0;

Няма заключване: изходът на стойността i ще скача, прекъсвайки намаляване, и може също да има изход с -1;

Причина: След добавяне на заключване, само една нишка може да изпълнява кода в заключената област едновременно и двете нишки се изпълняват последователно, така че няма прекъснат изход.




Предишен:Потребител анулира диалога за запазване (MS Visual Database Tools)
Следващ:Хубав DBHelper клас, който изпълнява съхранени процедури
Публикувано в 14.06.2016 г. 10:53:36 ч. |
 Хазяин| Публикувано в 10.02.2022 г. 9:18:58 ч. |
.NET/C# Lock Principle Monitor предоставя подробно обяснение
https://www.itsvse.com/thread-9633-1-1.html
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com