티스토리 뷰

728x90
반응형

스레드 (Single Thread = 한 가닥)



싱글 스레드란, 하나의 프로세스에서 한가지 작업을 실행하기 위해 순차적으로 실행되는 하나의 흐름이다. 다시말해, 동시에 하나의 코드만 실행할 수 있다는 뜻이다.

자바 스크립트는 싱글 스레드로 하나의 힙 영역과 하나의 콜 스택을 가진다.

하나의 콜 스택을 가지기 때문에 한번에 하나의 일 밖에 하지 못하고, 앞에 일이 완료 될때까지 다음 할 일을 하지 못하고 기다려야 하는 동기적 처리를 한다.

하지만, 자바 스크립트가 싱글 스레드라는 말은 정확히 말하자면, 자바스크립트 자체 즉, '자바스크립트 엔진이 단일 호출 스택을 사용한다' 는 관점에서만 맞는말이고, 실제 자바스크립트가 구동되는 환경(자바스크립트 런타임 / 브라우저나 Node.js) 에서는 주로 멀티 스레드를 사용한다. 

다시말해, 자바스크립트 자체는 싱글 스레드 이지만, 자바스크립트 런타임은 싱글 스레드가 아니다.

 

 

자바스크립트의 싱글 스레드 작업 수행 방식

 

 

블로킹 방식

 

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

 

싱글 스레드

 

예를 들어, 웹 사이트에서 버튼 하나하나마다 30초씩 걸리면, 속터진다.

 

 

멀티 스레드를 이용하여 작업들을 동시에 처리하여 문제를 해결 할 수 있지만, 안타깝게도 자바스크립트는 싱글 스레드로 동작하기 때문에 멀티스레드를 이용하지 못한다.

 

따라서, 싱글 쓰레드 방식을 이용하면서, 동기적 작업의 단점을 극복하기 위해 여러개의 작업을 동시에 실행 시키도록 하는 비동기 작업을 수행한다.

 

참고

 

https://espania.tistory.com/337
 

[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

 

728x90
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함