3.3 KiB
3.3 KiB
aliases | tags | date | zero-link | parents | linked | ||||
---|---|---|---|---|---|---|---|---|---|
|
|
|
Блокировки в разработке, особенно в контексте многопоточности и баз данных, относятся к механизмам, предотвращающим одновременный доступ к ресурсу несколькими потоками или процессами, чтобы избежать несогласованности данных или других конфликтов.
Минусы блокировок:
- Есть риск получить Deadlock
- Блокировок может быть много
Виды реализаций:
- Мьютексы (Mutexes):
- Назначение: Обеспечивают эксклюзивный доступ к ресурсу. Когда поток захватывает мьютекс, другие потоки должны ждать, пока он освободится.
- Применение: В многопоточных приложениях для синхронизации доступа к общим данным.
- Читательские/писательские блокировки (Reader/Writer Locks):
- Назначение: Позволяют нескольким потокам читать ресурс одновременно, но блокируют доступ на запись. Если один поток пишет, все остальные потоки (и читатели, и писатели) должны ждать.
- Применение: Когда ресурс чаще читается, чем пишется, для улучшения производительности.
- Семафоры (Semaphores):
- Назначение: Управляют доступом к ресурсу, ограничивая количество потоков, которые могут одновременно им пользоваться.
- Применение: Для ограничения количества одновременно выполняемых операций, например, подключения к базе данных.
- Блокировки баз данных (Database Locks):
- Назначение: Предотвращают конкурентное выполнение операций, которые могут привести к некорректному состоянию данных.
- Применение: В системах управления базами данных (СУБД) для управления транзакциями и поддержания целостности данных.
Классификация:
- По области действия.
- Строчные. Блокировка конкретной строки
- Гранулярные. Блокировка
- Предикативные
- По строгости
- Совместная. Shared lock. Можно читать заблокированные данные
- Исключительная. Exclusive lock. С заблокированными данными ничего делать нельзя.