Sobes.tech
Junior — Middle
134

Explique el principio de funcionamiento del bloqueo mutuo (mutex) en el contexto de la programación multihilo.

Empresas donde se preguntó
AstonAston

Respuesta de la IA

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, обеспечивая, что только один поток одновременно может увеличить счетчик.