Здравствуйте, barney, Вы писали:
...
B>про Context / Coroutines
B>вообще это интересно, вполне можно использовать
B>Технический практический вопрос:
B>Как именно сделать некий легковесный пул задач на корутинах?
B>Я так понимаю, корутины дают легковесное переключение "контекста" т.к оным там является переключение (сохранение/восстановление)
B>указателя инструкций + текущего стека + регистров.
B>И это эффективнее вызова планировщика ОС
B>Плюс, позволяет писать более "синхронный" код, как в лекции про яндекс.карты.
B>Интересно, как именно сделать "асинхронный фьючерс" и wait() — например, ожидание ввода-вывода, сети, результата работы другой корутины и т.д.
Эту ссылку уже приводили выше, там именно про асинхронный фьючерс, wait
rethinkdb-concurrency
Если пропрет поразбираться просто из спортивного интереса — могу показать еще такое:
управлятор пулом задач на корутинах
от него вниз:
собственно, корутина
движок контекстов от буста рядом есть еще posix-ucontext
и вверх:
ожидатор
пример объекта синхронизации 'событие' там рядом еще много других всяких
future
promise
их ядро
кишки устройства задачи
запуск задачи
некоторые примеры использования:
запуск задачи
синхронизация
future/promise
B>... ожидание ввода-вывода
файловый дескриптор (он же сокет)
ожидание событий на дескрипторах, epoll