Pull to refresh

Comments 10

Как раз прочитал первую часть, подписался на ваши публикации, а тут вторая часть. Спасибо за серию статей, для новичков очень полезное обозрение темы.
Совсем для новичков я ещё когда-то писал Code Hardcorius, но то было довольно давно и мне там уже много чего не нравится (про полиморфизм вообще дичь какая-то несуразная).
Спасибо за статьи! В качестве неплохого наглядного примера реализации сопрограмм на PHP вспомнилась эта статья https://habrahabr.ru/post/164173/
Я, конечно, дико извиняюсь — но у Вас речь идёт про потоки или про многозадачность?
Поскольку между ними существует некоторые различия — и далеко не всегда шедулингом потоков занимается ОС, насколько мне помнится.
Недопонял про корутины. Посоветуйте, какую-нибудь низкоуровневую реализацию (С/С++/Rust), чтобы осознать, как оно работает, а то yield воспринимается просто как магическое слово.
Можно посмотреть на Горутины. Там они встроены в сам язык, и их реализация написана на го.

Я так понимаю, что реализация Posix threads в userspace GNU pth — это и есть корутины в С.

Спасибо большое всем за ответы.
Насколько я понял, сопрограммы получаются аналогом пайпов в никсах, управление передаётся туда-сюда, «истинной параллельности» нет. Можно реализовать в лоб по Кнуту, но получается фигня какая-то, мне больше понравилось вот это объяснение и код. Вроде за счёт разворачивания макросов и оптимизации компилятора мы в итоге получаем линейную программу, где в соответствующие места инлайнится соответствующая часть (метка, состояние) сопрограммы.

У меня лёгкий микроконтроллерный С головного мозга, отсюда и привычка лезть в кишки абстракциям.
Sign up to leave a comment.

Articles