Sobes.tech
Back to questions
Junior — Middle
61

Можете назвать основные механизмы и инструменты для организации синхронизации потоков или процессов?

Answer from AI

sobes.tech AI

Основные механизмы и инструменты для синхронизации потоков или процессов в Python:

  • Lock (блокировка): Обеспечивает взаимное исключение, чтобы только один поток мог выполнять критическую секцию.
  • RLock (рекурсивный Lock): Позволяет одному потоку захватывать блокировку несколько раз.
  • Semaphore: Ограничивает количество потоков, которые могут одновременно получить доступ к ресурсу.
  • Event: Позволяет одному потоку сигнализировать другим о наступлении события.
  • Condition: Позволяет потокам ждать определенного условия и уведомлять друг друга.
  • Queue: Потокобезопасная очередь для обмена данными между потоками.

Для процессов (модуль multiprocessing) есть аналогичные механизмы:

  • multiprocessing.Lock, multiprocessing.Semaphore, multiprocessing.Event, multiprocessing.Queue.

Пример использования Lock:

import threading

lock = threading.Lock()

counter = 0

def increment():
    global counter
    with lock:
        temp = counter
        temp += 1
        counter = temp

threads = [threading.Thread(target=increment) for _ in range(100)]
for t in threads:
    t.start()
for t in threads:
    t.join()

print(counter)  # Должно быть 100