Встречается на собеседованиях • сегодня
Какие знаешь способы решения 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
интервью вопросы и ответы