57 lines
4.0 KiB
Markdown
57 lines
4.0 KiB
Markdown
|
---
|
|||
|
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 -->
|