nodejs 서버를 쉽게 생성하기 (7): 차단 작업 구현_node.js

WBOY
풀어 주다: 2016-05-16 16:25:46
원래의
1206명이 탐색했습니다.

차단 작업이 무엇인지 살펴보겠습니다.

안녕하세요 별 인쇄를 10초 동안 지연시키는 sleep() 메서드를 시뮬레이션합니다.

requestHandlers.js

코드 복사 코드는 다음과 같습니다.

함수 시작() {
console.log("요청 핸들러 'start'가 호출되었습니다.");
기능 수면(밀리초) {
var startTime = new Date().getTime();
while (new Date().getTime() < startTime milliSeconds);
}
수면(10000);
"Hello Start"를 반환합니다.
}

함수 업로드() {
console.log("요청 핸들러 '업로드'가 호출되었습니다.");
"안녕하세요 업로드"를 반환합니다.
}

수출.시작 = 시작;
수출.업로드 = 업로드;

/start를 요청하면 인쇄되기까지 10초 정도 지연이 발생합니다.

요청/업로드 시 영향을 받지 않습니다.

실험을 해보자:

첫 번째 브라우저 창의 주소 표시줄에 http://localhost:8888/start를 입력하고 아직 열지 마세요!

두 번째 브라우저 창의 주소 표시줄에 http://localhost:8888/upload를 입력하세요. 아직 열지 마세요.

첫 번째 창("/start")에서 Enter를 누른 다음 빠르게 두 번째 창("/upload")으로 전환하고 Enter를 누릅니다.

주의하세요, 무슨 일이 일어났는지:

/start URL을 로드하는 데 10초가 걸렸는데, 이는 우리가 예상했던 것입니다.

/업로드 URL도 10초 걸렸습니다!

예, 해당 요청 핸들러에 sleep()과 유사한 작업이 없습니다. 무엇이 문제인가요?

이유는 start()에 차단 작업이 포함되어 있기 때문입니다. 비유적으로 말하면 "다른 모든 처리 작업을 차단합니다."

Node.js는 단일 스레드이며 추가 스레드를 추가하지 않고도 작업을 병렬로 처리할 수 있습니다.

이벤트 루프를 통해 병렬 작업을 구현합니다. 이를 최대한 활용해야 합니다. 차단 작업을 최대한 피하고 대신 비차단 작업을 사용하세요.

다음 섹션에서는 비차단 작업을 구현하는 방법을 소개하겠습니다.

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