Встречается на 1% собеседований по Python
Какие знаешь способы решения Race Condition
-
Блокировки (Locks)
Использованиеthreading.Lock()для синхронизации доступа к общему ресурсу.pythonimport threading lock = threading.Lock() def safe_increment(): with lock: global counter counter += 1 -
Семафоры (Semaphores)
Ограничивают количество потоков, одновременно работающих с ресурсом.pythonsemaphore = threading.Semaphore(3) # Макс 3 потока def worker(): with semaphore: # Критическая секция
-
Условные переменные (Condition)
Позволяют потокам ждать сигнала перед выполнением.pythoncondition = threading.Condition() def wait_for_resource(): with condition: condition.wait() # Ожидание notify() -
Атомарные операции
Использованиеqueue.Queueилиmultiprocessing.Valueсlock=True.pythonfrom multiprocessing import Value counter = Value('i', 0, lock=True) -
Thread-safe структуры данных
Например,queue.Queueдля безопасного обмена данными.pythonfrom queue import Queue safe_queue = Queue() -
Асинхронность (asyncio)
В однопоточном режиме с корутинами race condition исключается.pythonimport asyncio async def task(): await asyncio.sleep(1)

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы