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