IT/Javascript, Typescript (2) 썸네일형 리스트형 Node.js의 동작 원리를 알아보자 (+ 이벤트 루프, libuv, 스레드 풀) 앞서 "왜 자바스크립트가 싱글 스레드이고, 어떻게 논블로킹 I/O를 지원하는지" 알아 보았습니다. 오래 걸리는 작업은 웹 브라우저에 위임하는게 핵심 이었는데요, 과연 서버용 JS 환경인 node.js에서는 어떻게 동작할까요? 이번 포스팅에서 좀더 자세하게 알아보도록 하겠습니다. 이벤트 루프(Event Loop)란? 간단하게 이벤트 루프에 대해서 알아보겠습니다. 자바스크립트는 여러 이유 때문에 싱글 스레드 언어로 기획되었습니다. 그래서 하나의 콜 스택만 가지고, 한번에 하나의 작업 밖에 수행하지 못합니다. 그래서 자바스크립트는 웹 브라우저에 긴 I/O 작업(네트워크, 타이머 등)을 위임합니다. 웹 브라우저가 백그라운드에서 작업을 수행하고, 다시 콜 스택에 불러오는 것이죠. 자바스크립트는 이벤트 루프(Eve.. 자바스크립트는 왜 싱글 스레드이고, 어떻게 비동기 처리가 가능할까? (+ Event Loop에 대하여) 이전 글에서 간단하게 I/O 블로킹과 동기, 비동기 개념에 대해 알아 봤습니다. 저번 포스팅을 보고 온 사람은 "비동기와 논블로킹 I/O을 위해서는 당연히 멀티 스레드를 사용해야 하는 것 아니야?" 라는 의문이 들 것입니다. 하지만 자바스크립트는 싱글 스레드 논블로킹 I/O 기반 언어입니다. 오늘은 왜 자바스크립트는 싱글 스레드로 동작하고, 어떻게 논블로킹 I/O를 만족하는지 알아 보겠습니다. 멀티스레드 프로그래밍의 문제 동시성이란? 동시성이란 여러 작업이 동시에 실행되는 것 같이 보이는 것을 말합니다. (동시성 vs 병렬성 참고) 동시성 덕분에 우리가 웹 브라우저에 유튜브를 보면서, 댓글을 달거나 추천 영상을 찾아볼 수 있는 것이죠. 멀티스레드 프로그래밍의 동시성 문제 동시성 방식은 여러 스레드가 각.. 이전 1 다음