> 웹 프론트엔드 > 프런트엔드 Q&A > node.js는 단일 스레드인가요?

node.js는 단일 스레드인가요?

WBOY
풀어 주다: 2022-04-19 17:05:29
원래의
2859명이 탐색했습니다.

node.js는 기본적으로 단일 스레드입니다. node.js는 단일 스레드 비동기 비차단 모드를 채택합니다. 그러나 타사 라이브러리는 다중 코어 리소스를 사용할 수 있습니다. -스레딩 지원. 단지 메인 스레드가 단일 스레드이고 메인 스레드의 작업이 동기적으로 차단된다는 것입니다.

node.js는 단일 스레드인가요?

이 튜토리얼의 운영 환경: windows10 시스템, nodejs 버전 12.19.0, Dell G3 컴퓨터.

node.js는 단일 스레드인가요?

node.js는 기본적으로 단일 스레드이고 node.js는 단일 스레드 비동기 비차단 모드를 채택합니다.

node.js는 단일 스레드 비동기 비차단 모드를 채택합니다. 단일 스레드는 자체 Javascript 실행 환경의 단일 스레드를 나타냅니다. Node.js에는 Javascript가 실행될 때 새 스레드를 생성하는 기능이 없습니다. Libuv 및 해당 이벤트 루프를 통해 비동기가 달성됩니다.

노드는 메인 스레드가 단일 스레드이고 메인 스레드의 작업이 동기적으로 차단된다는 점입니다. 그러나 모든 비동기 작업을 IO 스레드 풀에 던지고 메인 스레드는 특정 이벤트 폴링 메커니즘을 통해 IO 스레드 풀과 상호 작용하여 비동기 데이터를 얻습니다.

node.js의 성능은 최고가 아닙니다. JavaScript 엔진으로 인해 node.js는 기본적으로 단일 스레드이며 node.js 애플리케이션은 멀티 코어 리소스를 활용할 수 없습니다.

그러나 멀티스레딩 지원을 제공하는 타사 라이브러리가 있지만 원활하지는 않습니다. Node.js는 I/O 병목 현상을 해결합니다(기존 기술에 비해 동기식 차단 호출은 스레드 낭비를 유발함). I/O 속도는 향상되지 않지만 리소스 예약이 더 효율적입니다. I/O 속도가 해결되지 않으면 node.js는 동시에 많은 요청을 처리할 수 있다고만 말할 수 있지만 각 요청의 응답 시간은 여전히 ​​그만큼 길거나 그보다 더 깁니다.

Node는 단일 스레드인데 높은 동시 요청을 어떻게 처리합니까?

이벤트 중심을 활용하세요.

node.js는 단일 스레드인가요?

각 Node.js 프로세스에는 프로그램 코드를 실행하는 주 스레드가 하나만 있어 실행 컨텍스트 스택을 형성합니다.

메인 스레드 외에 "이벤트 큐"도 유지 관리됩니다. 사용자의 네트워크 요청이나 기타 비동기 작업이 도착하면 노드는 이를 이벤트 큐에 넣습니다. 이때는 즉시 실행되지 않으며 메인 스레드 코드가 실행될 때까지 코드가 차단되지 않습니다. 완벽한.

메인 스레드 코드 실행이 완료된 후 이벤트 루프, 즉 이벤트 루프 메커니즘을 통해 이벤트 큐의 시작 부분에서 첫 번째 이벤트를 가져오기 시작하고 스레드 풀에서 스레드를 할당합니다. 이 이벤트를 실행한 다음 계속해서 세 번째 이벤트를 가져옵니다. 두 번째 이벤트의 경우 스레드 풀에서 실행을 위해 스레드가 할당되고 세 번째, 네 번째 이벤트가 실행됩니다. 메인 스레드는 이벤트 큐의 모든 이벤트가 실행될 때까지 이벤트 큐에 실행되지 않은 이벤트가 있는지 지속적으로 확인합니다. 그 후 새 이벤트가 이벤트 큐에 추가될 때마다 메인 스레드에 해당 이벤트를 제거하라는 알림이 전달됩니다. 처리를 위해 EventLoop에 주문하고 전달합니다. 이벤트가 실행되면 메인 스레드에 알림이 전달되고, 메인 스레드는 콜백을 실행하며, 스레드는 스레드 풀로 반환됩니다.

메인 스레드는 위의 세 번째 단계를 계속 반복합니다.

NodeJ의 단일 스레드는 기본적으로 스레드 풀에 의해 완료되는 기본 스레드입니다. 노드는 구현을 위해 모든 차단 작업을 내부 스레드 풀에 넘겨주기만 하며 어떠한 작업도 수행하지 않습니다. 실제 I/O 작업을 통해 비동기식 비차단 I/O를 달성하는 것이 노드의 단일 스레드 및 이벤트 중심의 핵심입니다.

추천 학습: "nodejs 비디오 튜토리얼"

위 내용은 node.js는 단일 스레드인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿