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

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

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

Пример на Python с генераторами (частный случай кооперативной многозадачности):

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:
    for task in tasks[:]:
        try:
            next(task)
        except StopIteration:
            tasks.remove(task)

Здесь каждый генератор явно передает управление через yield. Если убрать yield, выполнение заблокируется на первом генераторе.

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

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

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

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