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

Python Middle Без компании
В чем разница между вытесняющей и конкурентной многозадачность
Ответы
Вытесняющая многозадачность (preemptive) — это когда операционная система сама решает, когда переключать контекст между потоками/процессами. Например, в Python потоки (threading) используют вытесняющую модель — ОС может прервать выполнение потока в любой момент. Конкурентная многозадачность (cooperative) — это когда переключение между задачами контролирует сам код. Например, корутины в asyncio работают именно так — они должны явно отдавать управление (await), иначе другие задачи не выполнятся. Пример с asyncio: ``` 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 — конкурентная