Junior — Middle
90
Объясните, что представляет собой механизм взаимного исключения (Mutex) и как он используется в многопоточном программировании?
Answer from AI
sobes.tech AI
Механизм взаимного исключения (Mutex) — это объект синхронизации, который используется для предотвращения одновременного доступа нескольких потоков к общему ресурсу. Он гарантирует, что в каждый момент времени только один поток может выполнять критическую секцию кода, связанную с этим ресурсом.
В C# для работы с мьютексом можно использовать класс Mutex или более часто lock (который использует Monitor под капотом). Пример с lock:
private readonly object _lockObj = new object();
void CriticalSection()
{
lock(_lockObj)
{
// Код, который должен выполняться только одним потоком одновременно
}
}
Если один поток вошёл в блок lock, другие потоки, пытающиеся войти в этот же блок с тем же объектом, будут ждать, пока первый поток не выйдет из блока. Это предотвращает состояние гонки и обеспечивает корректность данных.