티스토리 뷰
1) 자바스크립트와 쓰레드
자바스크립트는 싱글 쓰레드로 동작하는 언어이다.
메인 쓰레드 하나와 콜스택 하나로 구성되어 있다.
비동기 작업을 동시에 할 수 있다.
자바스크립트는 코어 엔진만 가지고 돌아가지 않고 실행환경(런타임)의 도움을 받아 동시 실행을 하기 때문에 동시 실행을 할 수 있다.
(WebAPI,(dom, ajax, setTimeout...), Event Queue, Event Loop 등과 함께 동작한다.
run-to-completion : 쓰레드가 하나이기 때문에 일을 하나 끝내기 전에는 다른 것은 하지 않는다.
이벤트 루프: 프론트엔드에서 자바스크립트는 혼자 독립 실행되는 것이 아니라 브라우저를 통해 실행된다. 브라우저에서 자바스크립트를 실행할 때에는 이벤트 루프라는 것을 기반해서 실행한다.
2) V8 엔진에서의 비동기 작업 처리
동시성(Concurrency): 자바스크립트는 기본적으로 한 번에 하나의 일만 처리하지만, 프로젝트가 돌아가는 것을 보면 여러 작업이 한 번에 처리되는 것처럼 느껴진다. 동시성(Concurrency)이란 한 번에 여러개가 처리되는 것처럼 보이는 것이다.
실제로 동시에 실행되는 것이 아니라 실제로 동시에 실행되는 것은 병렬이라고 한다.
용어정리
(1) heap: 동적으로 생성된 객체 인스턴스가 할당되는 영역
(2) call stack : 일거리가 쌓이는 스택
(3) event queue: 테스크 큐(Task queue)나 콜백 큐(callback queue)라고도 한다.
비동기 처리 함수의 콜백 함수, 비동기식 이벤트 핸들러, 타이머의 콜백 함수를 넣어두는 큐
(4) event loop: 테스크(일거리)가 들어오길 기다렸다가 테스크가 들어오면 일을 하고, 일이 없으면 잠깐 쉬기를 반복하는 자바스크립트 내의 루프
→ call stack 내에서 현재 실행중인 일거리가 있는 지, 이벤트 큐에 일거리가 있는 지 반복해서 확인하고, 콜 스택이 비어 있으면 이벤트 큐의 일거리를 콜스택으로 옮겨가게끔 돕는다.
web API: Ajax, DOM event, setTimeout 등 브라우저에 내장된 API
'프론트엔드 > JavaScript' 카테고리의 다른 글
05. 변수 (0) | 2022.06.12 |
---|---|
04. 추상화 개요 (0) | 2022.06.12 |
03.자료형 개요 (0) | 2022.06.12 |
배열(Array) 함수 (0) | 2022.05.29 |
JavaScript 언어의 특징 (0) | 2022.05.29 |
- Total
- Today
- Yesterday
- 비교 연산자
- filter
- foreach
- 동적(dynamic) 언어
- findindex
- some
- 느슨한 타입(loosely typed)
- 참조형 데이터
- find
- 얕은복사
- map
- redux
- EVERY
- redux-middleware
- redux thunk
- redux middleware
- undefined
- null
- 타입변환
- redux-thunk
- 기본형 데이터
- 불변 객체
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |