티스토리 뷰
자바스크립트는 싱글스레드이므로 여러 코드를 동시적으로 실행 할 수 없고. 하나씩 실행할 수 밖에없게 설계되어있다.
또한 오래걸리는 작업들은 비동기적으로 실행되기때문에, 종종 예측하기 힘든 일들이 발생한다.
멀티쓰레드를 가능하게 해주는 것이 Web Workers다.
웹워커는 스크립트 연산을 주 실행 스레드 와 별개로 어딘가의 공간에서 별도의 스레드로 실행 할 수 있게 한다.
그렇기에 무겁고 오래걸리는 작업들을 Web Workers에서 실행 해 주기도 한다.
이말인 즉, => (보통 UI 스레드)가 멈추거나 느려지지 않고 동작할 수 있다.
1. Worker등의 생성자로 생성을 한다.
2. 이 후 얘네는 별도의 공간을 받아서 다른 전역 맥락에서 실행되는데 이공간이 바로 "워커 스레드"
3. 전용 워커의 경우 - DedicatedWorkerGlobalScope 객체
4. 공용 워커의 경우 - SharedWorkerGlobalScope 객체
원하는 코드들을 모두 이 워커 스레드에 넣고 개별적으로 실행시 킬 수 있지만
물론 몇가지 제한들이 있다.
1. DOM을 직접 조작 할 수 없다.
2. 일부 속성을 사용 할 수 없다.
워커스레드와 메인스레드가있으면 얘네는 어떻게 통신을 하냐? -> 메세지를 통하여 데이터교환을 한다.
- postMessage()를 통하여 데이터를 전송하고
- onmessage 이벤트처리기로 데이터를 받는다.
'Javascript' 카테고리의 다른 글
[javascript] 비동기프로그램 (0) | 2022.06.01 |
---|---|
[javascript]연산자 (0) | 2022.05.27 |
promise 의 리턴값과 then (1) | 2022.05.20 |
[Javascript] 프로그래밍, 자바스크립트 (0) | 2022.04.19 |
섹션2 HA2 까다로웠던 부분 (0) | 2021.12.13 |