자바스크립트는 싱글?!

JwithYOU·2023년 6월 16일
0
post-thumbnail

Javascript 는 싱글 쓰레드!

넵 맞습니다 자바스크립트는 싱글입니다. 이게 무슨 소리인가 싶기도 하겠지만 별 다른 뜻이 있는게 아닌 싱글 쓰레드로 작동 된다는 뜻입니다!

What is Thread?🤔

Thread(이하 쓰레드)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위입니다. 한번에 하나의 작업만을 처리하면 싱글 쓰레드, 동시에 여러 작업을 처리하는게 가능하면 멀티 쓰레드 환경이라고 생각하면 됩니다.

작동 방식

그렇다면 어떤 방식으로 작동이 되는 걸까요? 아래 그림과 같이 설명하겠습니다.

Javascript는 하나의 call stack을 가지고 있습니다. 작업을 하나씩 진행합니다. 여기서 자바스크립트가 멀티 쓰레드 같이 여러 작업을 동시에 처리하는 것처럼 보이는 이유는 비동기 작업을 Web API가 처리해줍니다. 비동기 작업으로는 event, setTimeout 등이 있습니다.

Web API에서 작업이 완료되면 callback queue로 넘겨집니다. 여기서 이벤트 루프가 call stack을 보면서 call stack에 처리할 작업이 없다면 callback queue에서 call stack에 차례대로 넘깁니다.

event loop만 독립적으로 실행되지 않고 웹 브라우저나 NodeJS같은 멀티 쓰레드 환경에서 실행되어서 런타임에 내포된 Web API를 활용하여 멀티쓰레드와 같이 동기와 비동기 작업을 분류하여 진행하는, 멀티쓰레드에서나 가능한 작업을 수행할 수 있게 되었습니다.

이러한 작동 방식으로 싱글 쓰레드임에도 불구하고 동시성(Concurrency) 지원이 가능합니다.

왜 싱글 쓰레드로 되어야하나❓

싱글 쓰레드로 작동하는 이유는 웹 브라우저 환경에서의 주요 목적 중 하나인 웹 페이지의 동적인 상호작용을 가능하게 하기 위함입니다. 웹 페이지에서 여러 가지 작업이 동시에 실행되면 문제가 발생할 수 있습니다. 예를 들어, 한 작업이 다른 작업이 사용 중인 자원에 접근하거나 수정하는 동안 상태가 불일치할 수 있습니다.

싱글 쓰레드 모델은 JavaScript 엔진이 한 번에 하나의 작업만 처리하도록 보장하여 이러한 문제를 피할 수 있습니다.

profile
개발자가 되기 위한 코린이의 여정

0개의 댓글