Re[15]: эффективная реализация thread pool
От: vopl Россия  
Дата: 26.05.18 09:57
Оценка:
Здравствуйте, barney, Вы писали:

...
B>про Context / Coroutines
B>вообще это интересно, вполне можно использовать

B>Технический практический вопрос:

B>Как именно сделать некий легковесный пул задач на корутинах?

B>Я так понимаю, корутины дают легковесное переключение "контекста" т.к оным там является переключение (сохранение/восстановление)

B>указателя инструкций + текущего стека + регистров.
B>И это эффективнее вызова планировщика ОС

B>Плюс, позволяет писать более "синхронный" код, как в лекции про яндекс.карты.


B>Интересно, как именно сделать "асинхронный фьючерс" и wait() — например, ожидание ввода-вывода, сети, результата работы другой корутины и т.д.


Эту ссылку уже приводили выше, там именно про асинхронный фьючерс, wait rethinkdb-concurrency

Если пропрет поразбираться просто из спортивного интереса — могу показать еще такое:
управлятор пулом задач на корутинах

от него вниз:
собственно, корутина
движок контекстов от буста рядом есть еще posix-ucontext

и вверх:
ожидатор
пример объекта синхронизации 'событие' там рядом еще много других всяких

future
promise
их ядро

кишки устройства задачи
запуск задачи

некоторые примеры использования:
запуск задачи
синхронизация
future/promise

B>... ожидание ввода-вывода

файловый дескриптор (он же сокет)
ожидание событий на дескрипторах, epoll
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.