Встречается на собеседованиях • сегодня

Что такое синхронизация потоков

Синхронизация потоков — это механизм, который обеспечивает корректное взаимодействие потоков при работе с общими ресурсами, предотвращая состояние гонки (race condition). Основные способы:

  1. lock (Monitor) – блокирует критическую секцию для одного потока:
csharp
private static object _lock = new object();
lock (_lock)
{
    // Критическая секция
}
  1. Mutex – межпроцессная блокировка:
csharp
using var mutex = new Mutex(false, "GlobalMutex");
mutex.WaitOne();
try { /* работа с ресурсом */ }
finally { mutex.ReleaseMutex(); }
  1. Semaphore – ограничивает количество потоков:
csharp
SemaphoreSlim semaphore = new SemaphoreSlim(3); // Макс 3 потока
await semaphore.WaitAsync();
try { /* работа */ } 
finally { semaphore.Release(); }
  1. Interlocked – атомарные операции:
csharp
int counter = 0;
Interlocked.Increment(ref counter);

Важно избегать взаимных блокировок (deadlock) и минимизировать время удержания блокировок.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы