자바스크립트는 싱글 쓰레드로 동작하는 언어?

양주영·2021년 10월 1일
0

javascript

목록 보기
26/42

자바스크립트는 메인 쓰레드 하나와 콜스택 하나로 구성되어 있는 싱글 쓰레드로 동작하는 언어라고 한다.
또한, 비동기 작업을 동시에 할 수 있다고도 한다.
엥? 😳 1번에 1개의 작업만 할 수 있는데, 어떻게 동시에 실행을 할 수 있다는 걸까?
오늘은 이 주제에 대해 알아보려고 한다.

💡 스레드란?
프로세스 내 실행 단위이다. 하나의 경우 싱글 스레드(Single thread), N개일 경우 멀티 스레드(Multi thread)라고 한다. 중요한 건 갯수의 차이가 아니라 작업 방식의 차이이다.
싱글 쓰레드는 첫번째 작업을 시작하고 끝낸 후에 다음 두번째 작업을 처리한다. 멀티쓰레드의 경우에는 두 개의 쓰레드가 두 개의 작업을 짧은 시간 동안 번갈아가며 수행하기 때문에 두 개의 작업이 동시에 처리되는 것처럼 보인다.



자바스크립트는 정말 싱글 쓰레드일까?

자바스크립트의 메인 쓰레드인 이벤트 루프가 싱글 쓰레드이기 때문에 자바스크립트를 싱글 쓰레드 언어라고 부른다. 하지만 이벤트 루프만 독립적으로 실행되지 않고 웹 브라우저나 NodeJS 같은 멀티 쓰레드 환경에서 실행된다. 즉, 자바스크립트 자체는 싱글 쓰레드가 맞지만 자바스크립트의 런타임은 싱글 쓰레드가 아니다.



싱글쓰레드로 어떻게 한 번에 여러 요청을 처리할까?

기존 동기식 요청은 코드를 한 줄 한 줄 차례대로 실행하기 때문에 작업시간 및 자원의 낭비가 심해진다. 하나의 요청이 완료될 때까지 기다리지 않고 동시에 다른 작업을 실행하는 비동기 호출로 극복이 가능하다.

그렇다면 비동기 작업은 어떻게 동작할까?
비동기 작업에 대한 내용은 다음 글에 포스팅 해보겠다.



참고 >
https://chanyeong.com/blog/post/44

profile
뚜벅뚜벅

0개의 댓글