Sobes.tech
Назад к вопросам
Junior — Middle
66

Можете объяснить, что подразумевается под понятием мьютекс и для чего он используется в многопоточном программировании?

Компании, где спрашивали
ООО Ренью

Ответ от нейросети

sobes.tech AI

Мьютекс (mutex, mutual exclusion) — это механизм синхронизации, используемый в многопоточном программировании для предотвращения одновременного доступа нескольких потоков к общему ресурсу.

Когда несколько потоков пытаются изменить или прочитать общий ресурс, без синхронизации может возникнуть состояние гонки, приводящее к ошибкам.

Мьютекс работает так:

  • Поток захватывает мьютекс перед доступом к ресурсу.
  • Пока мьютекс захвачен, другие потоки, пытающиеся его захватить, блокируются и ждут.
  • После завершения работы с ресурсом поток освобождает мьютекс, позволяя другим потокам продолжить.

Пример на Java:

import java.util.concurrent.locks.ReentrantLock;

public class Counter {
    private int count = 0;
    private final ReentrantLock lock = new ReentrantLock();

    public void increment() {
        lock.lock();
        try {
            count++;
        } finally {
            lock.unlock();
        }
    }

    public int getCount() {
        return count;
    }
}

Здесь ReentrantLock — это реализация мьютекса, которая гарантирует, что только один поток одновременно изменяет count. Это предотвращает ошибки при параллельном доступе.