하나의 단일 스레드에서 node.js가 다른 코드로 동시에 두 개의 스크립트를 실행할 수있는 방법을 상상할 수 없습니다. 예를 들어 두 개의 서로 다른 스크립트 A와 B가 있습니다. 거의 동시에 여러 클라이언트가 A와 B를 요청하면 어떻게됩니까? PHP의 경우 A를 처리하기 위해 5 개의 스레드가 생성되고 B를 처리하기 위해 5 개의 스레드가 생성되고, 각 요청 스크립트가 다시 실행됩니다. 하지만 Node.js는 어떻게됩니까? 고맙습니다! 새로운 이벤트가 발생하면, 그것은 큐에 넣어됩니다Node.js가 두 개의 다른 스크립트를 어떻게 실행합니까?
0
A
답변
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 스레드가 결과를 선택하고 응답을 반환합니다.
관련 문제
- 1. 윈도우에서 스크립트를 어떻게 실행합니까?
- 2. 셀레늄 루비 스크립트를 다른 브라우저에서 어떻게 실행합니까?
- 3. 어떻게 다른 디렉토리에서 PHP 스크립트를 실행합니까
- 4. 다른 PHP 스크립트에서 PHP 스크립트를 호출하여 PHP 스크립트를 어떻게 실행합니까?
- 5. 두 개의 다른 설정으로 nUnit 테스트 세트를 어떻게 실행합니까?
- 6. 어떻게 Python 스크립트를 지속적으로 실행합니까?
- 7. 매초마다 PHP 스크립트를 어떻게 실행합니까?
- 8. Eclipse Plugin에서 스크립트를 어떻게 실행합니까?
- 9. 우분투에서이 bash 스크립트를 어떻게 실행합니까?
- 10. Heroku에서 python 스크립트를 어떻게 실행합니까?
- 11. OpenElec에서 파이썬 스크립트를 어떻게 실행합니까?
- 12. Javascript에서 Python 스크립트를 어떻게 실행합니까?
- 13. 이클립스에서 gdb 스크립트를 어떻게 실행합니까?
- 14. Java에서 PHP 스크립트를 어떻게 실행합니까?
- 15. 첫 번째 실행이 성공하지 못하면 어떻게 두 번째 스크립트를 실행합니까?
- 16. SSIS ... SSIS에서 SQL 스크립트를 어떻게 실행합니까?
- 17. 다른 파이썬 파일에서 .py 파일을 어떻게 실행합니까?
- 18. 단일 PHP 스크립트로 선언 된 두 개의 연속 PHP 스크립트를 어떻게 실행합니까?
- 19. 두 개의 서로 다른 스크립트를 섞어
- 20. 레일즈에서 레일즈 환경을로드하는 스크립트를 어떻게 실행합니까?
- 21. node.js가 두 번 응답합니다.
- 22. Spring ToolSuite에서 두 개의 웹 프로젝트를 충돌없이 어떻게 실행합니까?
- 23. Selenium RC에서 Selenium IDE 스크립트를 어떻게 실행합니까?
- 24. VxWorks Tornado Shell에서 스크립트를 어떻게 실행합니까?
- 25. 값을 반환하는 TSQL 스크립트를 어떻게 실행합니까?
- 26. NetBeans에 저장시 bash 스크립트를 어떻게 실행합니까?
- 27. pyparsing이 필요한 파이썬 스크립트를 어떻게 실행합니까?
- 28. 어떻게 bash 스크립트를 한 줄씩 실행합니까?
- 29. BASH 스크립트를 원격 시스템에서 어떻게 실행합니까?
- 30. "in"IIS에서 PowerShell 스크립트를 어떻게 실행합니까?
참고 : [this] (http://stackoverflow.com/a/19823583/201952), [this] (http://stackoverflow.com/a/21488067/201952) 및 [this] (http : //stackoverflow.com/a/22849860/201952). – josh3736