Middle+
104
questionbank

Какой тип многозадачности используется в Go и какой тип был до версии Go 1.15?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

В Golang используется кооперативная многозадачность с вытеснением.

До версии Go 1.15 использовалась исключительно кооперативная многозадачность без вытеснения.

Различия:

Тип многозадачностиОписание
Кооперативная без вытесненияГорутина добровольно уступает управление, вызывая блокирующие операции или runtime.Gosched(). Если горутина не уступает, другие горутины могут быть заблокированы.
Кооперативная с вытеснениемПланировщик может принудительно прервать выполнение горутины после некоторого времени, даже если она не выполняет блокирующую операцию. Это достигается внедрением точек прерывания в циклические конструкции.

Пример точки прерывания в цикле (вGo компилятор внедряет их автоматически в подходящие места):

golang