Node.js에서 비차단 I/O란 무엇인가요? 이 기사는 Node.js의 비차단 I/O를 이해하는 데 도움이 되는 예제를 사용합니다.
Written at the front
저는 오랫동안 Node.js를 배우고 싶었습니다. 프론트엔드는 서버측 지식을 이해하고 독립적으로 작은 풀스택을 완성할 수 있어야 한다고 생각합니다. 하지만 시간적 요인으로 인해 지난 학기에 몇 가지 기본 사항을 배운 후 더 이상 배울 시간이 없었습니다. 마침 오늘 두 번째 과정을 통과하여 Node.js를 다시 테스트하러 왔습니다! ! ! [추천 학습: "nodejs 튜토리얼"]
매점에 가서 식사하세요. 우리 모두는 음식을 위해 줄을 서야 합니다
우리의 프로세스는 다음과 같습니다. ---->기다려요 앞에 사람들이 요리 중이에요 --> 우리가 직접 요리할 차례예요 -------> 식사를 시작해요
외식하기 : 식당에서 음식 주문하기
이제 우리의 과정은 다음과 같습니다: 앉기------> 주문하기------> 먹기 시작하기
이상한 것을 사용해 보세요 in markdown
음식을 주문하기 위해 줄을 서는 것과 레스토랑 주문을 비교하는 것
직원에게 주문을 하는 사람들의 경우:
계속해서 윗문장을 보세요:
시스템이 입력을 받는데 출력 기간 동안 다른 입력을 받을 수 있나요?
밤에는 시스템 = 요리하는 아줌마 구내식당 또는 식당 웨이터, 입력 = 음식 주문, 출력 = 음식 제공(음식 제공)
식당의 이모는 음식을 하나씩만 제공할 수 있습니다--------->
웨이터는 음식을 주문한 후에도 다른 사람에게 서빙을 할 수 있습니다. 손님 ------->Non-blocking I/OXiaofang은 어머니의 집안일을 도와줍니다. 그녀가 해야 할 일: 세탁기로 빨래(20분), 바닥 쓸기(10분), 책상 정리(10분), 옷 걸기(5분). Xiaofang이 이러한 작업을 최소 ( )분 안에 완료할 수 있도록 영리하고 합리적인 새 시퀀스를 설계할 수 있습니까? A.20B.25C.30D.35기대하지 못하셨나요? (사실 기대는 안했어요~) 이 과정에서 우리는 세탁기를 이용해 세탁 = 투입, 건조 = 배출을 하게 되는데, 세탁기가 옷을 세탁하는 동안 우리는 다른 일을 할 수 있기 때문이죠. 이게
non- Blocking I/Oyo입니다.
index.js 그런 다음 프런트엔드 vs-code를 열고 터미널을 열고 <code>npm install glob
를 실행하여 glob 패키지를 설치하면 I/O가 차단되었는지 더 편리하게 관찰할 수 있습니다. index.js
,再打开我们前端人的vs-code,打开终端,执行npm install glob
安装一个glob包,来帮我们更加方便去观察I/O是否阻塞。
先来看阻塞I/O
代码先贴上:index.js
const glob = require('glob'); var result = null; console.time('glob') result = glob.sync(__dirname + '/**/*') console.timeEnd('glob') console.log(result)
首先,先用require引入我们的glob包,接下来,用glob.sync去做一个打印目录的一个操作,将结果打印的同时,利用time/timeEnd,去记录时间,看node执行这个操作共花费多少时间。
在终端输入node index.js
Blocking I/O를 먼저 살펴보겠습니다
코드가 먼저 붙여져 있습니다: index.js
const glob = require('glob'); var result = null; console.time('glob') glob(__dirname + '/**/*',function(err,res){ result = res; // console.log(result) console.log('got result'); }) console.timeEnd('glob') console.log('今天你卷了没?')
node index.js
를 입력하세요.
첫 번째 줄을 보세요. 내 컴퓨터에서 실행하는 데 총 20.93밀리초가 걸립니다. 서버는 더 이상 작지 않습니다.
Non-blocking I/O를 다시 살펴보세요
코드로 직접 이동:rrreee
이번에는 콜백 함수를 사용하여 연산합니다. 결과를 인쇄하려면 줄이 너무 많기 때문에 인쇄로 대체하겠습니다. 'got result', 타이밍이 완료된 후 print 문 작업을 수행하면 결과를 살펴보겠습니다.우선 시간은 3.258ms로 이전 20.93과 비교하면 는 단순히 적다, 너무 많지는 않습니다. 뭐, 마지막에 우리가 출력하는 명령문이 있고, 마지막으로 우리가 원하는 연산 결과가 인쇄됩니다. 즉, 입력과 출력 사이에 다른 연산을 수행하고 결과에 영향을 미치지 않습니다. 시간이 훨씬 덜 걸립니다!
🎜🎜결론🎜🎜🎜내 이해: 비차단 I/O를 사용하면 대기 시간을 많이 줄일 수 있으며 대기 시간 동안 다른 작업도 수행할 수 있습니다(어떤 조언이라도 환영합니다!!!) 🎜모든 것에는 절대적인 것이 없습니다. Non-Blocking I/O가 반드시 좋다는 뜻은 아닙니다. 예를 들어, 웨이터들 사이에 사고가 발생하면 모든 손님이 기다려야 합니다. 레스토랑의 전반적인 품질에 영향을 미칠 이 웨이터에 대해 (예(서버 충돌로 이해됨), I/O를 차단합니다. 웨이터가 여러 명이므로 일대일 서비스를 제공하므로 그 중 한 명에게 사고가 발생하더라도 전반적인 품질에는 영향을 미치지 않으며 여러 웨이터를 고용하는 데도 그에 따른 비용이 듭니다.
더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 소개를 방문하세요! !
위 내용은 Node.js의 비차단 I/O란 무엇입니까? 예시를 통해 이해해보세요!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!