Назад к вопросам
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. Это предотвращает ошибки при параллельном доступе.