Какие примитивы синхронизации вы знаете кроме lock (например, ReaderWriterLockSlim, Mutex)?
Что такое Lock и RLock и в чём между ними разница?
В каких сценариях следует использовать RLock вместо Lock?
Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Рейтинг:
2
Сложность:
5
Основные примитивы:
Monitor (база для lock),
Mutex (межпроцессная блокировка),
Semaphore/SemaphoreSlim (ограничение параллельного доступа),
ReaderWriterLockSlim (оптимизация для частого чтения),
AutoResetEvent/ManualResetEvent (сигнализация между потоками),
Barrier (синхронизация этапов).
Рейтинг:
4
Сложность:
5
Lock — это простая блокировка, которую поток может захватить только один раз. RLock — это рекурсивная блокировка, позволяющая одному и тому же потоку захватывать её несколько раз. Lock проще и быстрее, но менее гибкий. RLock нужен в сложных сценариях с вложенными вызовами. Оба используются для защиты общих данных.
Рейтинг:
3
Сложность:
5
RLock используют, когда один и тот же поток может повторно захватывать блокировку. Это часто происходит при вложенных вызовах функций или рекурсии. Обычный Lock в таких случаях приведёт к deadlock. RLock отслеживает, сколько раз поток захватил блокировку. Это делает код безопаснее, но чуть менее производительным.