2014-04-14 2 views
0

하나의 단일 스레드에서 node.js가 다른 코드로 동시에 두 개의 스크립트를 실행할 수있는 방법을 상상할 수 없습니다. 예를 들어 두 개의 서로 다른 스크립트 A와 B가 있습니다. 거의 동시에 여러 클라이언트가 A와 B를 요청하면 어떻게됩니까? PHP의 경우 A를 처리하기 위해 5 개의 스레드가 생성되고 B를 처리하기 위해 5 개의 스레드가 생성되고, 각 요청 스크립트가 다시 실행됩니다. 하지만 Node.js는 어떻게됩니까? 고맙습니다! 새로운 이벤트가 발생하면, 그것은 큐에 넣어됩니다Node.js가 두 개의 다른 스크립트를 어떻게 실행합니까?

+1

참고 : [this] (http://stackoverflow.com/a/19823583/201952), [this] (http://stackoverflow.com/a/21488067/201952) 및 [this] (http : //stackoverflow.com/a/22849860/201952). – josh3736

답변

1

그것은 것 libuv

아주 간단한 설명에 의해 구현되는 소위 이벤트 루프을 사용합니다. 이제는 노드 프로세스가 이러한 이벤트를 처리하기 위해 실행을 방해합니다.

PHP와 노드의 주된 차이점은 node.js 프로세스가 본질적으로 독립 실행 형 웹 서버 (단일 스레드) 인 반면 PHP는 웹 서버 (예 : Apache) 내에서 실행되는 인터프리터 인 반면, 각 요청에 대해 새 스레드를 작성합니다.

0

Node.js는 이러한 응용 프로그램에서 대부분의 작업이 node.js가 비동기 적으로 처리하는 I/O이기 때문에 웹 응용 프로그램 (네트워크 사이트)에 매우 적합합니다.

두 개의 요청이 동시에 도착하고 Node.js에 하나의 단일 실행 스레드 만있는 경우에도 각 요청 (순서대로)은 I/O 용 운영 체제로 전달됩니다 (libuv as mihai가 지적했듯이 JavaScript 실행 스레드가 하나만 있다는 사실은 부적절합니다. I/O가 완료되면 JavaScript 스레드가 결과를 선택하고 응답을 반환합니다.

관련 문제