Community

웹워커(Web Workers)

웹워커(Web Worker)란 싱글스레드인 자바스크립트가 다중 스레드를 사용할 수 있게 지원해 주는 기능입니다. 싱글스레드는, 연산량이 많은 작업의 경우 그 작업이 완료되어야 다른 작업을 수행할 수 있다는 단점이 있습니다. 해당 연산이 진행되는 동안, 클릭 이벤트 같은 다른 작업이 진행되어야 사용자는 답답함을 느끼지 않습니다. 이런 케이스에서 워커가 사용됩니다. 무거운 연산 작업은 워커에게 맡기고, 메인스레드는 UI 클릭 이벤트를 처리합니다. 무거운 연산 작업이 끝나면 메인 쓰레드에서 해당 연산 결과를 실행합니다. 물론 비동기로 처리하는 방법도 있습니다. 하지만 비동기 실행도 너무 많이 쌓이게 되면 모든 작업의 실행 속도가 느려질 수 있습니다. 이러한 문제까지 고려해서 나온 API가 웹워커 입니다. WebWorkers API는 별도의 백그라운드에서 실행되는 별도의 스레드를 작성하여 메시징 시스템을 통해 메인스레드와 통신합니다. new Worker() 생성자 함수로 객체를 생성하고, postMessage() 메서드를 사용해 해야할 일을 보내고 onmessage()를 통해 결과값을 수신합니다. 복잡한 연산은 다른 쓰레드가 계산해주고, 메인 스레드는 사용자 상호 작용 및 기타 작업을 자유롭게 처리할 수 있어 유용합니다. 페이지 로드 시간은 더 빨라지고 사용자 인터페이스의 응답성은 향상됩니다. 복잡한 연산이 필요한 빅데이터 처리나 웹 게임 등에서 웹 워커는 유용합니다. 싱글 스레드인 Node.js 에서 별도의 워커 프로세스를 생성하여 다른 프로세스에서 코드가 실행되도록 도와주는 cluster 에서도 활용중입니다.

알림

알림이 없습니다