Блокування (програмування)Блокування (англ. lock, рос. блокировка) — один із механізмів синхронізації в інформатиці, що забезпечує ексклюзивний доступ до спільного ресурсу. Типи блокування
Блокування відрізняються по типу доступу до даних:
Найпростіший спосіб блокування — бінарний семафор. Він не розрізняє типи доступу до даних. Типи блокувань відрізняються по стратегії продовження виконання заблокованого потоку:
РеалізаціяДля ефективної реалізації механізму блокування потрібна підтримка на апаратному рівні, наприклад, у вигляді однієї із атомарних операції таких як «test-and-set», «fetch-and-add» чи«compare-and-swap», що дозволяють перевірити наявність блокування і якщо воно відсутнє встановити його. Однопроцесорні системи також можуть використовувати послідовності команд, які не перериваються, за допомогою спеціальних префіксів команд, але це не працює в багатопроцесорних системах із спільною пам'яттю. В системах де не існує таких атомарних операцій можна використовувати алгоритм Декера чи алгоритм Пітерсона. Гранулярність блокуванняГранулярність блокування — це міра кількості даних для блокування. Гранулярність блокування є компромісом між:
Блокування читання та записуБлокування читання та запису англ. read–write lock (RW lock) — примітив синхронізації для розв'язання задачі читачів та записувачів. Даний вид блокування дозволяє операціям читання виконуватись паралельно, але вимагає ексклюзивного доступу для запису. Застосовується для структур даних, що не можуть бути записані атомарною операцією (наприклад алгоритмом read-copy-update). RW блокування може бути реалізоване з різними пріоритетами читання та запису:
Блокування (СУБД)
Примітки
|