@undefined_title

Event loop и то как работает асинхронность это одно и тоже или просто связано?

асинхронность я понимаю это когда в коде есть моменты ожидания, например ответ от сервера, вместо того чтобы его ожидать он выполняет следюйщий из очереди стек, а потом когда возвращается ответ, довыполняется текущий стек сразу добавляется вперед очереди тот задержаный ответ и его обрабатывает
если есть на это код, event loop это - сам процесс когда и как добавляется стек в очередь?
  • Вопрос задан
  • 914 просмотров
Пригласить эксперта
Ответы на вопрос 1
@rPman
Где то под капотом nodejs работает обычный event loop, все асинхронные методы складывают в очередь свои события, каждый кусок кода выполняется, будучи вызван именно от сюда.

Все методы должны как то уметь работать асинхронно, т.е. будить event loop при завершении работы, если не умеют - наверное для них (каждого вызова) запускается свой поток, внутри которого работает обычный синхронный вызов, по окончании работы которого так же дергается тот же event loop.

например мы хотим асинхронно файл прочитать - метод получает от операционной системы хандлер объекта, который умеет работать асинхронно, как только получили порцию данных - в цикле event loop завершает работать метод ожидания хоть какого то события (список хандлеров в параметрах либо это специализированный семафор, который все дергают) и обрабатывает событие, которое его разбудило - т.е. видим что пришли данные и вызываем callback метод, у казанный в парметрах вызова работы с файлом, в параметрах - результаты работы. После их обработки снова в цикле вызывается метод ожидания. Таким образом основной цикл работает в одном потоке, но ожидания только если нет событий.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы