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

39 lines
3.3 KiB
Markdown
Raw Normal View History

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