Re[14]: эффективная реализация thread pool
От: barney  
Дата: 26.05.18 08:26
Оценка:
_>Причём тут какой-то rethinkdb, если ты писал свой ответ на вполне однозначную фразу "стекфул корутины в бусте не зря на асме сделали, а не на longjump"?

...который был, в контексте, ответа на мою фразу и пример аццкого кода rethinkdb, нашпигованного платформенными зависимостями )
там черт ногу сломит...
реверскод?) перелогинься))

_>Естественно, что не все библиотеки Boost'a собираются под Андроид (причём это не какие-то баги, а вполне себе заранее заложенная и документированная ситуация). _>

Однако с обсуждаемыми библиотеками (переключения контекстов, сопрограммы и т.п.) никаких проблем нет.

ясно, хорошо

_> И это вполне предсказуемо — откуда возьмутся проблемы у банального ассемблерного кода сохранения/восстановления регистров?


ясно, сохранение контекста/регистров на платформенных асмах — не проблема для библиотеки

_> Там сложности в основном у библиотек требующих всяческий специфичный системный API...


м... я думал, boost опирается только на c++ std / posix и с андроидом проблема именно в совместимости с NDK
(там, например нет стандартной C библиотеки, там bionic)

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

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

Я так понимаю, корутины дают легковесное переключение "контекста" т.к оным там является переключение (сохранение/восстановление)
указателя инструкций + текущего стека + регистров.
И это эффективнее вызова планировщика ОС

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

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