Зміст:
Визначення - Що означає Заява про блокування?
Оператор блокування в C # - це твердження, яке містить ключове слово "lock" і використовується в багатопотокових програмах, щоб гарантувати, що поточний потік виконує блок коду для завершення без перерви в інших потоках. Оператор блокування отримує блокування взаємного виключення для даного об'єкта, так що один потік виконує блок коду за один раз і виходить із блоку коду після звільнення блокування.
Оператор блокування - це ексклюзивна конструкція блокування, яка використовується для забезпечення синхронізованого доступу до спільних даних у багатопотокових програмах. Це допомагає захистити цілісність змінного ресурсу, який розділяється кількома потоками, не створюючи перешкод між цими потоками. Оператор блокування може використовуватися однотонним об'єктом для запобігання одночасному доступу до його загальних даних декількома клієнтами.
Оператор блокування є основним примітивом синхронізації, доступним у бібліотеці .NET Framework Class. Він автоматично генерує послідовний і безпечний для винятків код, який може обробляти потреби синхронізації у багатопотокових програмах. Він також пропонує простий метод управління синхронізацією шляхом генерації ефективного коду, який запобігає помилкам, які можуть бути викликані рукописним кодом.
Техопедія пояснює заяву про блокування
Оператор блокування має надавати аргумент посилального типу, а не типу значення. Загалом, рекомендується зафіксувати приватний член або приватний статичний член, щоб захистити дані, якими передаються всі екземпляри об'єкта. Оскільки блокування у загальнодоступному типі або екземплярах, що не знаходяться під контролем коду, може призвести до тупикових ситуацій, коли кілька потоків чекають виходу одного об’єкта, що використовується для оператора блокування, їх потрібно уникати.
Прикладом використання оператора блокування може бути багатопотокова програма, у якій об’єкт облікового запису з методом виведення балансу використовує оператор lock, щоб запобігти одночасному виконанню одного і того ж методу декількома потоками, що може підштовхнути баланс до від'ємного числа .
Тіло оператора блокування має бути невеликим, щоб скоротити час, необхідний для інших потоків, які очікують на блокування, зменшуючи шанси на тупик та мінімізуючи ймовірність виникнення виключення.
Обмеження у використанні операторів блокування включають те, що вони можуть використовуватися лише з даними, що стосуються поточної програми. Заяви блокування також не можуть підтримувати час очікування.
