Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 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 09: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