Я прохожу асинхронное программирование и понимаю, что есть 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 процесса
цикл обработки событий
фактическая функция (всякий раз, когда цикл обработки событий извлекает что-то из очереди событий)
cron-подобная работа, которая отслеживает время, асинхронный ответ и т. Д. И т. Д. *
Продолжение вышеуказанного вопроса what classifies to be run as async
.
Можем ли мы запустить a = b + c
в асинхронном режиме?(IMO, нет, так как b + c нужно будет вычислять только на машине, поэтому не имеет смысла делать a = b + c в асинхронной функции)
Если да, кто позаботится о вычислении b +с?
Если нет, то каково правило для функции быть действительно асинхронной