digital-garden/dev/fundamental/Блокировка.md
Struchkov Mark be8fd578f3
All checks were successful
continuous-integration/drone/push Build is passing
Обновление
2024-10-09 09:23:45 +03:00

57 lines
4.0 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:
- maturity/🌱
date:
- - 2024-05-24
zero-link: []
parents:
linked:
---
Блокировки в разработке, особенно в контексте [[Multithreading|многопоточности]] и баз данных, относятся к механизмам, предотвращающим одновременный доступ к ресурсу несколькими [[Поток процесса ОС|потоками]] или [[Процесс ОС|процессами]], чтобы избежать несогласованности данных или других конфликтов.
**Минусы блокировок:**
- Есть риск получить [Deadlock](Deadlock.md)
- Блокировок может быть много
**Классификация:**
- По области действия.
- Строчные. Блокировка конкретной строки
- Гранулярные
- Предикативные
- По строгости
- Совместная. Shared lock. Можно читать заблокированные данные
- Исключительная. Exclusive lock. С заблокированными данными ничего делать нельзя.
**Виды реализаций:**
- **Мьютекс (Mutex)**:
- **Назначение**: Обеспечивают эксклюзивный доступ к ресурсу. Когда поток захватывает мьютекс, другие потоки должны ждать, пока он освободится.
- **Применение**: В многопоточных приложениях для синхронизации доступа к общим данным.
- **Читательские/писательские блокировки (Reader/Writer Locks)**:
- **Назначение**: Позволяют нескольким потокам читать ресурс одновременно, но блокируют доступ на запись. Если один поток пишет, все остальные потоки (и читатели, и писатели) должны ждать.
- **Применение**: Когда ресурс чаще читается, чем пишется, для улучшения производительности.
- **Семафоры (Semaphores)**:
- **Назначение**: Управляют доступом к ресурсу, ограничивая количество потоков, которые могут одновременно им пользоваться.
- **Применение**: Для ограничения количества одновременно выполняемых операций, например, подключения к базе данных.
- **Блокировки баз данных (Database Locks)**:
- **Назначение**: Предотвращают конкурентное выполнение операций, которые могут привести к некорректному состоянию данных.
- **Применение**: В системах управления базами данных (СУБД) для управления транзакциями и поддержания целостности данных.
***
## Мета информация
**Область**:: [[../../meta/zero/00 Разработка|00 Разработка]]
**Родитель**::
**Источник**::
**Автор**::
**Создана**:: [[2024-05-24]]
### Дополнительные материалы
-
### Дочерние заметки
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
<!-- SerializedQuery: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
- [[Two Phase Lock]]
<!-- SerializedQuery END -->