Блокування із низьким рівнем деталізації () — шаблон проєктування, який пропонує блокувати групу об'єктів за допомогою єдиного елементу блокування.

Опис

Часто під час бізнес-транзакції відбувається взаємодія із групою пов'язаних об'єктів. Тоді, якщо виникає потреба заблокувати один елемент в групі також варто блокувати й інші. Але застосування блокування до кожного елемента в групі об'єктів спричиняє ряд проблем. Так, наприклад, необхідно відстежувати всі об'єкти в групі, що призводить до втрат продуктивності через велику конкуренцію за ресурс. Також блокування для кожного об'єкта, не зважаючи на реалізацію, вимагає додаткових витрат пам'яті.

Даний шаблон розв'язує цю проблему, накладаючи один елемент блокування на групу об'єктів. Даний підхід не тільки спрощує блокування, але й звільняє від потреби завантажувати всі об'єкти в пам'ять, щоб їх заблокувати.

Реалізація

Щоб реалізувати блокування із низьким рівнем деталізації необхідно створити єдину точку конкуренції на право доступу до групи заблокованих елементів. Як приклад, таким об'єктом може виступати корінь агрегації.

Іншою спільною точкою блокування може бути, наприклад, номер версії:

Див. також Паралелізм Блокування (програмування) Транзакція (бази даних)

Джерела Coarse Grained Lock