본문 바로가기
[Nodejs] 동기/비동기, 블로킹/논블로킹 동기/비동기, 블로킹/논블로킹은 Nodejs에 한정한 개념이 아니다. 블로킹은 일반적으로 스레드 수준에서 발생하며 블로킹 작업은 스레드의 실행을 차단하고, 해당 스레드가 다른 작업을 수행하지 못하게 만든다. Node.js는 싱글 스레드 기반의 런타임 환경으로, 기본적으로 하나의 메인 스레드에서 코드를 실행하는 특징이 있다. 싱글 스레드 환경에서는 한 번에 하나의 작업만을 처리할 수 있고 따라서 메인 스레드에서 코드 실행 중인 경우 다른 작업은 대기해야 함. 메인스레드에서 전부 처리할꺼면 싱글스레드방식이 비효율적인데 그래서 비동기+논블로킹 방식으로 일부 작업들을 백그라운드로 보내고 스레드풀의 스레드가 처리할 수 있도록 설계됐고 이게 핵심이다. 메인 스레드에서 블로킹 작업을 처리한다? 메인 스레드는 코드 실.. 2023. 10. 2.
[Nodejs] Event-driven (이벤트기반) Nodejs 1. 이벤트기반 아키텍처를 사용 2. 싱글 스레드 기반 3. 논블로킹 I/O 이벤트 기반 아키텍처는 논블로킹과 비동기 처리의 이점을 최대한 활용하고 효율적으로 구현하기 위한 방식 중 하나 노드가 이벤트 기반 아키텍처를 사용하는 이유는 자바스크립트가 이벤트 기반 언어이기 때문만은 아님. 주된 이유는 주로 성능, 비동기+논블로킹 처리, 자바스크립트 표준 및 확장성을 개선하기 위함 싱글 스레드 모델이라 간단, 경량화, 스레드 간의 동기화 문제를 처리하는 복잡성을 줄임. 싱글 스레드 모델이지만 비동기/논블로킹 방식 + 이벤트 기반의 처리를 통해 많은 요청을 효율적으로 처리할 수 있도록 설계됨. 이벤트 기반 아키텍처에서 여러 요청(이벤트)를 처리하기 위해 효율적인 논블로킹 방식을 사용. 이벤트 기반 .. 2023. 9. 30.