Где и как работает наблюдатель событий в Async, Await - PullRequest
1 голос
/ 09 мая 2019

Я прохожу асинхронное программирование и понимаю, что есть EventTable, Event Queue и цикл обработки событий.

В моем понимании каждый раз, когда компилятор видит ожидание в стеке вызовов, он регистрирует запись в таблице событий.,Всякий раз, когда приходит результат асинхронности, запись из таблицы событий удаляется и помещается в очередь событий.

Допустим, мы выполняем вызов http в асинхронной функции.поэтому я полагаю, что запись будет сделана в таблице событий, и всякий раз, когда будет получен ответ от вызова http, определенный код будет помещен в EventQueue для запуска.А цикл Event позаботится о запуске кода.Но у меня вопрос: кто делает http-вызов и who is tracking the response from the api аналогично в случае setTimeout() who is running the clock and checking the entires in Event Table?

Если какой-то другой процесс отслеживает, это означает, что на одноядерном компьютере запущено 3 процесса

  1. цикл обработки событий

  2. фактическая функция (всякий раз, когда цикл обработки событий извлекает что-то из очереди событий)

  3. cron-подобная работа, которая отслеживает время, асинхронный ответ и т. Д. И т. Д. *

Продолжение вышеуказанного вопроса what classifies to be run as async.

Можем ли мы запустить a = b + c в асинхронном режиме?(IMO, нет, так как b + c нужно будет вычислять только на машине, поэтому не имеет смысла делать a = b + c в асинхронной функции)

Если да, кто позаботится о вычислении b +с?

Если нет, то каково правило для функции быть действительно асинхронной

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...