Встречается на собеседованиях • сегодня
Для чего используются примитивы синхронизации
Примитивы синхронизации помогают управлять доступом к общим ресурсам в многопоточных приложениях, предотвращая race conditions и обеспечивая корректность данных. Основные примитивы в C#:
- lock - простейший механизм для эксклюзивного доступа:
csharp
private readonly object _lockObj = new object();
lock (_lockObj)
{
// критическая секция
}- Monitor (основа lock) - более гибкий вариант с Wait/Pulse:
csharp
Monitor.Enter(_lockObj);
try { /* работа */ }
finally { Monitor.Exit(_lockObj); }- Mutex - межпроцессная блокировка:
csharp
using var mutex = new Mutex(false, "Global\\MyMutex");
mutex.WaitOne();
try { /* работа */ }
finally { mutex.ReleaseMutex(); }- Semaphore/SemaphoreSlim - ограничивают количество потоков:
csharp
using var semaphore = new SemaphoreSlim(3); // максимум 3 потока
await semaphore.WaitAsync();
try { /* работа */ }
finally { semaphore.Release(); }- ReaderWriterLockSlim - оптимизация для частого чтения:
csharp
var rwLock = new ReaderWriterLockSlim();
rwLock.EnterReadLock();
try { /* чтение */ }
finally { rwLock.ExitReadLock(); }Выбор примитива зависит от сценария: lock для простых случаев, Semaphore для ограничения параллелизма, ReaderWriterLock при частом чтении.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы