Как исполняется асинхронный/синхронный код внутри Libuv? #33
-
Здравствуйте, помогите пожалуйста, а то разные источники дают разную инфу, а в доках не нашел. Заранее спасибо! Libuv когда увидит что операция асинхронная кинет ее на выполнение epoll/iocp и тд (без попадания в event loop). После того как операция выполнена прийдёт событие и коллбек закинется в очередь фазы, как я понимаю poll, как исполнится этот код? У libuv есть просто доступ к байт-коду или машинному коду, который ранее был создан, и загружен в память, просто его на этом этапе вызывает из памяти с возвращенным значением, правильно? И такой же вопрос с синхронной операцией что происходит в этот момент? Синхронный пример:
Вывод будет таким: 1,2,3. Вопрос и по этому, что происходит в Libuv когда в него попадет синхронный код? И каким образом он может заблокировать event loop если в него попадают только выполненные коллбэки? Если я что то неправильно говорю, прошу поправить. И третий вопрос - правильно ли я понимаю что код типа простых циклов/условий/console.log() исполняется внутри V8, а синхронные/асинхронные методы биндингов (того же fs) в Libuv. Если да то как Libuv запускает их? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
Код исполняется в P.S. Весь код выполняется в
Еще ответ на этот вопрос: #15 |
Beta Was this translation helpful? Give feedback.
Код исполняется в
V8
, а не вlibuv
, вообще, как работает синхронный и асинхронный код можно понять безlibuv
, это дополнительные знания, которые конечно помогают в понимании всей картины, но совершенно не нужны для написания правильного, качественного и надежного кода. Синхронный код исполняется последовательно, в приведенном примере сначала первыйconsole.log
, потом вызов функции, из нее вызыввется колбек и из него срабатывает второйconsole.log
потом return из функции и потом третийconsole.log
. Синхронный код называют "блокирующим", потому, что во время его исполнения не могут приходить колбеки от асинхронных операций, ресолвиться промисы, таймеры не работают, они тоже на колбеках, про…