728x90
[Javascript] Javascript 특징 및 웹 워커(멀티 스레드)
인터프리터 언어
원시코드(프로그래머가 작성한 소스코드)를 기계어로 변환하는 과정없이 한줄 한줄 해석하여 바로 명령어를 실행하는 언어를 말한다.
R, Python, Javascript가 대표적이다.
- 장점 - 빌드 시간이 따로 없이 바로 실행 가능하다.
- 단점 - Runtime 상황에서는 한 줄씩 실시간으로 읽어서 실행하기 때문에 컴파일 언어에 비해 속도가 느리다.
단일 스레드
자바스크립트에서 동적으로 UI 변경 작업시 UI thread 라는 공간에서 Queue 방식으로 처리 순서를 담아 놓는다.
웹 워커를 통한 멀티 스레드
멀티스레드 기능을 지원해주는 다른 스크립트와 독립적으로 실행되는 javascript이다.
웹 워커가 생성될 때마다 자바스크립트를 실행할 수 있는 고유 스레드를 생성하여 속도 성능을 크게 향상시킬 수 있다.
워커에서 실행하는 코드는 브라우저 UI에도, 다른 워커에서 실행하는 코드에도 영향을 주지 않는다.
기존 웹은 다중 쓰레드가 불가능해 작업이 끝나기 전까지 UI가 멈춰버리는 경우가 있었다.
웹워커는 다음과 같은 상황에서 사용하기 적절하다.
- 매우 큰 문자열의 암호화/복호화
- 복잡한 수학계산(이미지, 비디오 처리 포함)
- 매우 큰 배열의 정렬
즉 로딩과 실행이 오래 걸리는 자바스크립트 파일이다.
example_workers.js에서 postMessage를 통해 1초마다 'test'라는 메세지를 브라우저에 보낸다. 그러면 웹페이지는 onmessage를 통해 해당 메세지를 받아 작업을 처리한다.(7 라인)
만약 위 예제가 웹 워커 없이 순수 단일쓰레드로 웹페이지에서 작업을 했다면 브라우저는 1초 단위로 멈추게 된다. 하지만, web worker를 통해 웹 브라우저에 전혀 영향 없이 작업이 가능하게 되었다.
Prototype Based language
내 정리 : https://dean30.tistory.com/105
728x90
'프로그래밍 > Javascript & React' 카테고리의 다른 글
[Javascript] 프로토타입(Prototype), 그래서 왜 쓰는데? (0) | 2022.01.15 |
---|---|
[Javascript] 생성자 함수(클래스), 객체와 객체 지향 프로그래밍 OOP(Object Oriented Programming) (0) | 2022.01.15 |
[Javascript] 렉시컬 스코프(Lexical Scope), 스코프 체인(Scope Chain), 클로저(Closure) (0) | 2022.01.13 |
[21/11/27] TIL_onClick 무한 렌더링, (0) | 2021.11.27 |
[React] z-index, 그의 정체는?!? (0) | 2021.11.12 |
댓글