Sobes.tech
Back to questions
Junior — Middle
68

Объясните различия между моделями многозадачности с вытеснением и с конкуренцией?

Answer from AI

sobes.tech AI

Модели многозадачности с вытеснением (preemptive multitasking) и с конкуренцией (cooperative multitasking) отличаются способом переключения между задачами:

  • Вытеснительная (preemptive): операционная система или планировщик самостоятельно прерывает выполнение текущей задачи, чтобы дать время другой. Это обеспечивает более справедливое распределение ресурсов и предотвращает зависание системы из-за одной задачи.

  • Конкурентная (cooperative): задачи сами решают, когда уступить управление другим. Если задача не уступает, другие могут не получить процессорное время, что может привести к зависаниям.

Пример в Python:

import threading
import time

def task():
    for i in range(5):
        print(i)
        time.sleep(1)  # здесь происходит уступка времени другим потокам

thread = threading.Thread(target=task)
thread.start()

В Python потоки работают с вытеснением, так как интерпретатор периодически переключает выполнение между потоками.