Неявне блокування () — шаблон проєктування, який пропонує винести блокування на глобальний рівень.
Опис
Будь-яка схема блокування корисна лише в тому випадку, якщо в ній не зроблено "проколів". Якщо забути накласти блокування, тоді вся схема блокування є марною. Якщо забути звільнити ресурс, він буде заблокований, що приведе до погіршення продуктивності аплікації. Застосування блокування запису, замість блокування читання призведе до використання застарілих даних, а невірне використання версії — до небажаних змін даних іншим користувачем. Окрім цього, механізм паралельного доступу важко тестувати через, що помилки в блокуванні можуть бути не замічені в тестах.
Щоб уникнути помилок розробників під час накладання блокування, даний шаблон пропонує винести блокування на глобальний рівень. Таким чином, можна один раз описати логіку блокування, яка буде застосовуватись до усіх транзакцій у системі (чи лише до необхідних), або ж скористатись вбудованим механізмом, що пропонує фреймворк.
Реалізація
Реалізуємо неявне блокування за допомогою декораторів. Головна їх перевага, в тому, що об'єкт до яких вони застосовуються навіть не підозрює про зміни у своїй функціональності.
Тоді при використанні сервісу ми не задумуватимемось про блокування.
Див. також Паралелізм Блокування (програмування) Неявний паралелізм Декоратор (шаблон проєктування)
Джерела Implicit Lock