티스토리 뷰

Javascript

Web Worker란??

이채야채 2022. 11. 28. 11:27

자바스크립트는 싱글스레드이므로 여러 코드를 동시적으로 실행 할 수 없고. 하나씩 실행할 수 밖에없게 설계되어있다.

또한 오래걸리는 작업들은 비동기적으로 실행되기때문에, 종종 예측하기 힘든 일들이 발생한다.

 

멀티쓰레드를 가능하게 해주는 것이 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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/05   »
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
글 보관함