digital-garden/_inbox/Блокировки.md

39 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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