я понимаю, что при вызове с роутера хранимой процедуры на сторадже через vshard.router.call, вызываемая функция будет работать в отдельном файбере?
2. Например у меня есть свой файбер с некотороый логикой на сторадже, я переодически делаю fiber.yield(). Вопрос если в своем файбере я сделал yield, а после этого произошел vshard.router.call, какой из этих функций раньше будет передано управление? Т.е. вопрос можно переформулировать так "при вызове vshard.router.call эта функция попадет в начало очереди на выполнение или в конец?"
вообще говоря на порядок лучше не надеяться. fiber.yield() == fiber.sleep(0), то есть ван-шот таймер на ноль секунд. Гарантируется лишь то, что файбер не будет разбужен в этом круге эвент лупа, за исключением если его не разбудит другой файбер через fiber.wakeup(). запросы из айпрото приходят пачками через нотификацию кондвара, в рамках одного цикла ев, таймеры срабатывают раньше, чем кондвары. но опять же, с точки зрения порядка реального времени, надеяться ни на что нельзя
Обсуждают сегодня