티스토리 뷰
스레드 (Single Thread = 한 가닥)
자바 스크립트는 싱글 스레드로 하나의 힙 영역과 하나의 콜 스택을 가진다.
하나의 콜 스택을 가지기 때문에 한번에 하나의 일 밖에 하지 못하고, 앞에 일이 완료 될때까지 다음 할 일을 하지 못하고 기다려야 하는 동기적 처리를 한다.
하지만, 자바 스크립트가 싱글 스레드라는 말은 정확히 말하자면, 자바스크립트 자체 즉, '자바스크립트 엔진이 단일 호출 스택을 사용한다' 는 관점에서만 맞는말이고, 실제 자바스크립트가 구동되는 환경(자바스크립트 런타임 / 브라우저나 Node.js) 에서는 주로 멀티 스레드를 사용한다.
다시말해, 자바스크립트 자체는 싱글 스레드 이지만, 자바스크립트 런타임은 싱글 스레드가 아니다.
자바스크립트의 싱글 스레드 작업 수행 방식

- 동기적 방식 : 이전 작업이 진행 중일 때는 다음 작업을 수행하지 않고 기다림.
- 블로킹 방식 : 스레드에서 작업 하나가 수행되고 있을 때, 다른 작업을 동시에 할 수 없는 방식


예를 들어, 웹 사이트에서 버튼 하나하나마다 30초씩 걸리면, 속터진다.
멀티 스레드를 이용하여 작업들을 동시에 처리하여 문제를 해결 할 수 있지만, 안타깝게도 자바스크립트는 싱글 스레드로 동작하기 때문에 멀티스레드를 이용하지 못한다.
따라서, 싱글 쓰레드 방식을 이용하면서, 동기적 작업의 단점을 극복하기 위해 여러개의 작업을 동시에 실행 시키도록 하는 비동기 작업을 수행한다.
참고
[javascript] 자바스크립트 엔진 안에 Memory Heap 과 Call Stack
JavaScript Engine(자바스크립트 엔진) Momoery Heap(메모리 힙) 참조 타입(객체 등) 데이터 들이 저장되는 공간이다. 변수나 상수들에 사용되는 메모리를 저장하는 영역 Call Stack(콜 스택) Primary Type (원시.
espania.tistory.com
https://espania.tistory.com/335
[javascript] 자바스크립트 엔진?? V8은 무엇일까??
자바스크립트 엔진 개발자가 작성한 코드를 컴퓨터가 이해할 수 있도록 해석하고 실행시켜주는 프로그램 혹은 인터프리터 이다. 표준적인 인터프리터로 구현이 되거나, 자바스크립트 코드를
espania.tistory.com
https://espania.tistory.com/338
[javascript] 비동기 작업
비동기 작업 - 비동기적 작업 : 싱글 스레드 방식을 이용하면서, 동기적 작업의 단점을 극복하기 위해 여러개의 작업을 동시에 실행 시키도록 하는 방식 - 논 블로킹 방식 : 하나의 작업이 스레드
espania.tistory.com
'JavaScript' 카테고리의 다른 글
| [javascript] 자바스크립트 엔진 안에 Memory Heap 과 Call Stack (0) | 2022.02.24 |
|---|---|
| [javascript] 자바스크립트 엔진?? V8은 무엇일까?? (0) | 2022.02.23 |
| [javascript] 비 구조화 할당 / 배열, 객체 비교 / 완벽 설명 (0) | 2022.02.23 |
| [javascript] 단락 회로 평가 개념 및 활용 예제 (0) | 2022.02.23 |
| [javascript] Truthy & Falsy (0) | 2022.02.22 |