이벤트 루프를 잘 활용하면 오래 걸리는 작업을 효율적으로 처리할 수 있다
작업에는 동시에 실행될 수 있는 작업과 동시에 실행될수 없는 작업이 있는데
기본적으로 자바스크립트 코드는 동시에 실행될 수 없다
하지만 파일 시스템 접근이나 네트워크를 통한 입출력 작업은 동시에 처리될 수 있다
블로킹이란 이전 작업이 끝나야만 다음 작업을 수행하는 것을 의미하고
논블로킹은 이전 작업이 완료될 때 까지 기다리지 않고 다음 작업을 수행함을 뜻한다
논브로킹 방식이 더 짧은 시간안에 같은 작업을 처리할 수 있다(모든 작업이 동시에 처리될 수 있는 작업이라는 전제)
setTime(콜백, 0)은 코드를 논블로킹으로 만들기 위해 사용하는 기법 중 하나이다
아무리 논블로킹 방식으로 코드를 작성하더라도 코드가 전부 내가 작성한 것이라면 시간은 짧아지지 않는다
단순히 실행 순서만 바뀔 뿐이다
그렇지만 실행 순서를 바꿔줌으로서 간단한 작업을이 대기해야 하는 상황을 막을 수 있다는 점에서 의의가 있다
블로킹 / 논블로킹은 설명만 들었을 때 마치 동기 / 비동기 와 매우 유사해보이지만 같은 의미는 아니다
동기 / 비동기 : 백그라운드 작업 완료 확인 여부
블로킹 / 논블로킹 : 함수가 바로 return 되는지 여부
노드에서는 동기-블로킹 방식과이 대부분이다 비동기 - 논블로킹 방식은 없다고 봐도 된다
동기 - 블로킹 방식
: 백그라운드 작업 완료 여부를 계속 확인하며, 호출한 함수가 바로 return 되지 않고 백그라운드 작업이 끝나야 return 됨
비동기 - 논블로킹 방식
: 호출한 함수가 바로 return 되어 다음 작업으로 넘어가며, 백그라운드 작업 완료 여부는 신경 쓰지 않고 나중에 백그라운드가 알림을 줄 때 비로소 처리함
'Back > NestJS' 카테고리의 다른 글
페이지네이션(Pagenation) 구현하기 - (1) (0) | 2025.03.12 |
---|---|
[NextJS] 프로젝트 생성하기 with Yarn berry 4.4.0 (0) | 2025.01.26 |
[NestJS] JWT(JSON Web Token) - 로그인 API 구현과 암호화 (0) | 2024.08.10 |
[NestJs] @InjectRepository 데코레이터 with TypeORM (1) | 2024.07.27 |
[Node.js] 이벤트 루프 (event loop) (0) | 2023.03.28 |