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

Какие плюсы и минусы кооперативной многозадачности

Плюсы:

  • Легковесность: переключение между задачами происходит быстро, так как управляется на уровне кода, а не ОС.
  • Детерминированность: разработчик сам контролирует переключение задач, что упрощает отладку.
  • Эффективность: нет накладных расходов на системные вызовы или переключение контекста.

Минусы:

  • Блокирующие операции могут заморозить всю систему, если задача не отдает управление.
  • Сложность масштабирования: при большом количестве задач управление ими становится трудным.
  • Отсутствие параллелизма: задачи выполняются строго по одной, что ограничивает использование многоядерных процессоров.

Пример с 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(2)
    print("Task 2 finished")

async def main():
    await asyncio.gather(task1(), task2())

asyncio.run(main())

Здесь задачи task1 и task2 выполняются кооперативно, переключаясь на await.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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