Back to questions
Aston
Junior — Middle
75
Объясните принцип работы взаимной блокировки (mutex) в контексте многопоточного программирования.
Companies where asked
Answer from AI
sobes.tech AI
Взаимная блокировка (mutex) — это механизм синхронизации, который используется для предотвращения одновременного доступа нескольких потоков к общему ресурсу, например, к переменной или структуре данных. Mutex гарантирует, что в каждый момент времени ресурс может использовать только один поток, тем самым предотвращая состояния гонки и обеспечивая целостность данных.
Принцип работы:
- Поток пытается захватить mutex перед доступом к ресурсу.
- Если mutex свободен, поток захватывает его и продолжает работу.
- Если mutex уже захвачен другим потоком, текущий поток блокируется и ждет освобождения mutex.
- После завершения работы с ресурсом поток освобождает mutex, позволяя другим потокам получить к нему доступ.
Пример на 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(); // захватываем mutex
try {
count++;
} finally {
lock.unlock(); // освобождаем mutex
}
}
public int getCount() {
return count;
}
}
В этом примере ReentrantLock выступает в роли mutex, обеспечивая, что только один поток одновременно может увеличить счетчик.