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

Что кооперируется в кооперативной многозадачности

В кооперативной многозадачности ответственность за переключение между задачами лежит на самих задачах (корутинах). В отличие от вытесняющей многозадачности, где ОС принудительно переключает контекст, здесь каждая задача должна явно передавать управление следующей.

Ключевые аспекты:

  • Задачи добровольно уступают контроль через yield или await
  • Нет принудительного прерывания выполнения
  • Легковесность по сравнению с потоками
  • Используется в asyncio, генераторах, green threads

Пример с генератором:

python
def task1():
    for i in range(3):
        print("Task 1")
        yield

def task2():
    for i in range(3):
        print("Task 2")
        yield

tasks = [task1(), task2()]
while tasks:
    current = tasks.pop(0)
    try:
        next(current)
        tasks.append(current)
    except StopIteration:
        pass

Основной недостаток - если задача не отдает управление, вся система "зависает".

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

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

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

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