>  기사  >  웹 프론트엔드  >  Node.js의 비차단 I/O 자세히 살펴보기

Node.js의 비차단 I/O 자세히 살펴보기

青灯夜游
青灯夜游앞으로
2021-07-02 10:48:111738검색

Node.js의 비차단 I/O 자세히 살펴보기

Node.js에 관해 말하면, 어지러운 고유명사를 많이 들어보셨을 것입니다.

비동기에 대해 주로 이벤트 루프 및 **비차단 I/O, **공식적으로 이 두 가지 점이 Node.js 고성능.

그래서 Node.js의 비동기 메커니즘과 사용법을 이해하는 것이 중요합니다

Node.js의 비차단 I/O는 무엇입니까

  • I/O는 입력/출력, 입력 및 출력 시스템입니다. Output
  • Blocking I/O와 Non-Blocking I/O의 차이점은 시스템이 입력을 받고 출력하는 데 걸리는 시간과 다른 입력을 받을 수 있는지 여부에 있습니다

식사를 위해 줄을서는 예

Node.js의 비차단 I/O 자세히 살펴보기

Blocking I/O 와 Non-Blocking I/O의 차이점은 시스템이 입력을 받고 출력하는 데 걸리는 시간과 다른 입력을 받을 수 있는지 여부에 있습니다.

  • For 고객/주문직원

    • 음식 주문을 위해 줄을 서는 것이 I/O를 방해하고 있습니다(뒤에 있는 고객은 앞에 있는 고객이 음식을 받기 전에 기다려야 합니다)
    • 음식점 주문은 논블로킹입니다 I/ 오 (식당에는 웨이터가 많고 다른 사람들이 주문하는 동안 스스로 주문할 수도 있습니다)
  • 식당 이모와 웨이터를 소프트웨어 시스템과 비교하세요

    • 식당 이모는 식사를 하나씩만 준비할 수 있습니다 -> ; Blocking I/O
    • 웨이터는 주문 후 다른 손님에게 서비스를 제공할 수 있습니다. -> Non-blocking I/O
  • Input = 음식 주문

  • Output = 음식 제공

nodejs 튜토리얼"]

해결 대기 중인 질문의 예

예: 포럼의 개발자 질문이 제기되었습니다: "이 Node.js 문제를 해결하는 방법은 무엇입니까? 온라인에서 기다리고 있습니다. 긴급합니다."

I/O를 차단하는 상황은-> 계속 다른 사람이 대답하기를 기다리고, 다른 사람이 대답하면 또 하려고 합니다.

논블럭킹 I/O의 상황은-> 다른 일을 하러 갔다가 잠시 후 답을 보러 옵니다

집안일 예

샤오팡이 해야 할 일은 다음과 같습니다. 집안일:

    세탁기로 빨래하기 (20분))
  • 바닥 청소하기 (10분)
  • 책상 정리하기 (10분)
  • 옷 걸기 (10분)
기발한 디자인 부탁드려요 그리고 꽃의 수를 최소화하기 위한 합리적인 순서.

    A: 20분
  • B: 25분
  • C: 30분 - 세탁기가 옷을 세탁하는 동안 Xiaofang은 다른 일을 할 수 있기 때문입니다✅
  • D: 35분

비차단 I/O 이해

참고:

    결정
  • 시스템, 입력, 출력이 무엇인가요?
  • I/O 프로세스에서 다른 I/O가 가능합니까? /O be done

코드 I/O의 차단 이해하기
const glob = require("glob");

var result = null;
console.time("glob");
// 获取目下的文件和文件名
result = glob.sync(__dirname + "/**/*");
console.timeEnd("glob");
console.log(result);

다음 결과를 출력합니다

Node.js의 비차단 I/O 자세히 살펴보기

결과를 얻는 데

이 걸리는 것을 알 수 있습니다30 毫秒的等待时间

위 코드에서

blocking I/O에는 대기 시간이 있다는 결론을 내릴 수 있습니다. 실행 중에는 다른 작업을 수행할 수 없습니다.

코드에서 non-blocking I/O를 이해하세요
const glob = require("glob");

var result = null;
console.time("glob");
// 获取目下的文件和文件名
glob(__dirname + "/**/*", function (err, res) {
  result = res;
  console.log("got result");
});
console.timeEnd("glob");

console.log(1 + 1);

다음 결과를 인쇄하세요

glob: 3.198ms
2
got result

From 위의 코드를 사용하면 비차단 I/O가 대기 시간을 줄이고 실행 프로세스 중에 다른 작업도 수행할 수 있다는 결론을 내릴 수 있습니다

더 많은 프로그래밍 관련 지식을 보려면

프로그래밍 소개

를 방문하세요! !

위 내용은 Node.js의 비차단 I/O 자세히 살펴보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제