Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 30344|Ответ: 2

[Источник] Предохранитель резьбы C# с замком

[Скопировать ссылку]
Опубликовано 13.06.2016 17:26:25 | | |

Если ваш код находится в процессе, где одновременно работают несколько потоков, возможно, он выполняет этот код одновременно. Если результат каждого запуска совпадает с результатом одного потока, а значения других переменных совпадают с ожидаемостью, это считается потоком безопасным.
Другими словами, интерфейс, предоставляемый классом или программой, атомарен для потоков, или переключение между несколькими потоками не приводит к неоднозначности в результате выполнения интерфейса, что означает, что нам не нужно учитывать синхронизацию.
Проблемы с безопасностью потоков вызваны как глобальными, так и статическими переменными.
Если в каждом потоке есть операции чтения только для глобальных и статических переменных, но нет операций записи, обычно эта глобальная переменная безопасна для потоков; Если несколько потоков выполняют операции чтения и записи на переменной одновременно, обычно требуется синхронизация потоков, иначе это может повлиять на безопасность потоков.

Цель блокировки — предотвратить параллельные операции при многопоточном выполнении, а объекты эталонного типа блокировки позволяют одновременно работать только один поток в своей заблокированной области.

Lock может заблокировать только одну переменную типа опоры, то есть заблокировать адрес




Существует разница между результатами работы с блокировкой и без неё:

После блокировки: значение 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