본문 바로가기
프로그래밍/Javascript & React

[Javascript] Javascript 특징 및 웹 워커(멀티 스레드)

by Dean30 2022. 1. 14.
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

댓글