Встречается на собеседованиях • сегодня

Какие знаешь способы решения Race Condition

  1. Блокировки (Locks)
    Использование threading.Lock() для синхронизации доступа к общему ресурсу.

    python
    import threading
    lock = threading.Lock()
    
    def safe_increment():
        with lock:
            global counter
            counter += 1
  2. Семафоры (Semaphores)
    Ограничивают количество потоков, одновременно работающих с ресурсом.

    python
    semaphore = threading.Semaphore(3)  # Макс 3 потока
    def worker():
        with semaphore:
            # Критическая секция
  1. Условные переменные (Condition)
    Позволяют потокам ждать сигнала перед выполнением.

    python
    condition = threading.Condition()
    def wait_for_resource():
        with condition:
            condition.wait()  # Ожидание notify()
  2. Атомарные операции
    Использование queue.Queue или multiprocessing.Value с lock=True.

    python
    from multiprocessing import Value
    counter = Value('i', 0, lock=True)
  3. Thread-safe структуры данных
    Например, queue.Queue для безопасного обмена данными.

    python
    from queue import Queue
    safe_queue = Queue()
  4. Асинхронность (asyncio)
    В однопоточном режиме с корутинами race condition исключается.

    python
    import asyncio
    async def task():
        await asyncio.sleep(1)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы