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

В чем разница между вытесняющей и конкурентной многозадачность

Вытесняющая многозадачность (preemptive) — это когда операционная система сама решает, когда переключать контекст между потоками/процессами. Например, в Python потоки (threading) используют вытесняющую модель — ОС может прервать выполнение потока в любой момент.

Конкурентная многозадачность (cooperative) — это когда переключение между задачами контролирует сам код. Например, корутины в asyncio работают именно так — они должны явно отдавать управление (await), иначе другие задачи не выполнятся.

Пример с asyncio:

python
import asyncio

async def task1():
    print("Task 1 started")
    await asyncio.sleep(1)  # Явно отдаем управление
    print("Task 1 finished")

async def task2():
    print("Task 2 started")
    await asyncio.sleep(0.5)
    print("Task 2 finished")

asyncio.run(asyncio.gather(task1(), task2()))

Ключевые различия:

  • Вытесняющая: переключение управляется ОС, может быть в любой момент
  • Конкурентная: переключение происходит только в точках явного ожидания
  • В Python threading — вытесняющая, asyncio — конкурентная
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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