Sobes.tech
Back to questions
Junior — Middle
64

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

Answer from AI

sobes.tech AI

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

Принцип работы:

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

В Python для работы с мьютексами используется класс Lock из модуля threading:

import threading

lock = threading.Lock()

# Пример использования
with lock:
    # критическая секция — код, который должен выполняться только одним потоком
    print("Поток работает с ресурсом")

Использование мьютекса помогает избежать гонок данных и обеспечивает корректную работу многопоточных программ.