@Sasha_88

Асинхронное программирование — это кооперативная многозадачность?

Я знаю что такое кооперативная многозадачность и в принципе как она реализуется. Обычно в языке нужны указатели на функции или процедурные переменные, если язык паскалеподобный. И что-то типа мьютекса или монитора. Там главное чтобы программы были так реализованы, чтобы давать другим программам выполняться, передавая им управление.
А асинхронное программирование с синтаксисом async await и объектами future работают также? Там ведь тоже происходят callbacks., когда одна часть выполнила работу и вызывает другую. И почему когда говорят об асинхронном программировании, то в определении этого понятия не указывается это многопоточное выполнение или нет. Речь вообще идет о многопоточности?, А то в примерах на Rust или C# иногда встречается, что некоторый разный код на самом деле запускается в одном потоке. Экономя переключения с одного потока на другой.
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Многопоточность
Седой и строгий
Для понимания термина важен контекст. Например в Java асинхронным выполнением обычно называют любой неблокирующий вызов, чаще всего выполняемый отдельным потоком. В Python же асинхронность это именно кооперативная многозадачность, реализуемая сопрограммами, выполняемыми в цикле событий одним потоком.
Ответ написан
Комментировать
@bacon
Явно же по await переключается на другую задача, так что можно назвать кооперативной.

И почему когда говорят об асинхронном программировании, то в определении этого понятия не
указывается это многопоточное выполнение или нет. Речь вообще идет о многопоточности?
Поэтому что самая известная реализация асинхронности это event loop, который работает в один поток, а то что из него можно запустить еще один поток или процесс, уже не так важно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы