"차단"여부는 "차단"의 정의에 따라 결정됩니다. 일반적으로 블록은 CPU가 본질적으로 유휴 상태임을 의미하지만 현재 스레드는 I/O 등을 기다리고 있기 때문에 아무 것도 할 수 없습니다. 추천하지 않는 동기 입출력 기능을 사용하지 않는 한, node.js에서는 그러한 일이 발생하지 않습니다. 대신, 함수는 빠르게 리턴하고, 시작한 I/O 태스크가 완료되면 콜백이 호출되고 거기에서 가져옵니다. 중간에 다른 요청을 처리 할 수 있습니다.
노드에서 계산량이 많은 작업을 수행하는 경우 완료 될 때까지 CPU를 사용할 수 없지만 다른 이유로 CPU가 실제로 사용 중입니다. 일반적으로 이것은 사람들이 "차단"이라고 말할 때가 아니라 오랜 계산 일뿐입니다.
200ms는 I/O를 포함하지 않고 전적으로 계산을 수행 할 때 시간이 오래 걸립니다. 솔직히 말하면 노드에서해야하는 일은 아닙니다. 노드의 정신에 더 많은 해결책은 노드에 의해 호출되는 다른 (자바 스크립트가 아닌) 프로그램에서 발생하는 이러한 종류의 숫자 처리를 수행하는 것이며, 완료되면 콜백을 호출하는 것입니다. 멀티 코어 머신 (또는 다른 프로그램이 다른 머신에서 실행 중임)을 가지고 있다고 가정하면, 다른 프로그램이 멀리 떨어져있는 동안 노드는 요청에 계속 응답 할 수 있습니다.
클러스터 (다른 사람들이 언급했듯이)가 도움이 될 수있는 경우가 있지만 그 중 하나가 의심 스럽습니다. 클러스터는 실제로 CPU의 단일 코어 이상이 함께 처리 할 수있는 많은 요청이있을 때 만들어지며, 단일 요청이 각각 수백 밀리 초가 걸린 경우가 아닙니다.
출처
2011-11-16 23:36:39
rob
[여기] (http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/)에 대한 설명이 있습니다. 이것은 기본적으로 말한 내용이지만 조금 더 설명합니다. –