Node.js - Какие функции JavaScript точно блокируют процесс? - PullRequest
0 голосов
/ 09 февраля 2012

Я пытаюсь понять архитектуру цикла событий в Node.js.Я натолкнулся на сравнение между сервером с setTimeout () и сервером с sleep () предложением while.setTimeout () был обработан асинхронно, но sleep () - нет.http://www.atmarkit.co.jp/fcoding/articles/websocket/01/websocket01a.html (написано на японском языке)

Я это немного понял.Но я задал вопрос: «Как я могу найти, что блокирует процесс, а что нет, читая источник».Как вы это определяете?

1 Ответ

1 голос
/ 09 февраля 2012
  1. посмотрите на сигнатуру функции: если она var result = calculateData(parameters), чем она блокирует (между прочим, каждая функция в цикле обработки ввода-вывода блочного узла, но большинство функций просто ставит в очередь запросы ввода-вывода и завершается)
  2. измеряет время выполнения функции, время выполнения неблокирующей функции должно быть небольшим по сравнению со временем до вызова обратного вызова.
 var start = new Date();
 doesItBlock(function(err, result) {
     console.log('doesItBlock callback called after ' + (new Date - start));
 });
 console.log('doesItBlock exited after ' + (new Date - start));
...