본문 바로가기
Node.js

[Node.js] 기본_1

by 개발도사(진) 2023. 2. 1.

*** 공부 중 알게 된 내용을 정리하는 페이지이기 때문에, 오류가 있을 수 있습니다 ***

 

Event-Driven(이벤트 기반)

이벤트(ex. 클릭,네트워크 요청)가 발생할 때 미리 지정해 둔 작업을 수행하는 방식. 이벤트에 대응해 수행될 행동을 등록하는 것을 "Event Listener에 Callback 함수를 등록" 한다고 한다. 

 

Event-Loop

Callback 함수들을 관리하고 그 실행 순서를 관리. Node 종료 시까지 계속 수행되면서 event를 처리하므로 event "Loop" 다. 

call stack->background->task queue 의 흐름으로 작동한다. 

* background : 타이머, event listener 등이 대기하는 장소. 여러 작업 동시에 수행 가능.

* task queue : background에서 타이머, event listener 등의 callback 함수를 받아 수행하는 Queue.

 

Non-blocking I/O

I/O : 파일 시스템 접근, 네트워크 요청 등의 작업 

Non-blocking: 완료까지 대기할 필요 없이 다른 작업 수행 가능. 

 

I/O 작업은 non-blocking 방식으로 background에서 처리됨.

오래 걸리는 작업은 Non-blocking을 통해 실행 순서를 바꿔서 간단한 작업들이 대기하는 상황 방지.

 

참고로 Non-blocking!=동시 이므로 유의할 것(책 후반부에 나올 것이라 함)

 

Single Thread

: thread가 하나이므로 JavaScript 코드가 동시에 수행될 수 없음. 

엄밀히는 노드가 single thread로 동작하는 것이 아니라, "사용자가 통제할 수 있는 thread가 하나" 인 것에 더 가까움. 

그렇기에 프로그래머가 blocking이 발생하는 작업에 대해서(완료까지 대기해야 하는 작업에 대해서) non-blocking 을 적절히 활용해 대기시간을 줄여야 하는 것. 

 

'Node.js' 카테고리의 다른 글

[Node.js] 내장 객체 _ exports,  (0) 2023.02.07
[Node.js] Server, Client  (0) 2023.02.06
[Node.js] REPL, Module, 내장 객체_1  (0) 2023.02.03