스레드 (Thread)
컴퓨터 과학의 스레드는 동시에 여러 작업이나 프로그램을 실행하는 것입니다. 코드를 실행할 수 있는 각 단위를 스레드 라고 합니다.
메인 스레드 는 브라우저에서 사용자 이벤트를 처리하고, 디스플레이를 렌더링 및 페인팅하고, 일반적인 웹 페이지나 앱을 구성하는 대부분의 코드를 실행하는 데 사용되는 스레드입니다. 이러한 일이 모두 하나의 스레드에서 발생하기 때문에, 느린 웹 사이트나 앱 스크립트는 전체 브라우저의 속도를 저하시킵니다. 더 안 좋은 부분은 사이트나 앱 스크립트가 무한 루프에 빠지면 전체 브라우저가 중단된다는 것입니다.
최신 JavaScript는 추가 스레드를 생성하는 방법을 제공하며, 각 스레드는 서로 통신하면서 독립적으로 실행됩니다. 자체 스레드에서 기본 스레드와 동시에 실행되는 하위 프로그램을 분리하는 데 사용할 수 있는 web workers와 같은 기술을 사용해 수행될 수 있습니다. 이러한 기술들로 느리거나 복잡하거나 장기간 실행되는 작업을 메인 스레드와 독립적으로 실행할 수 있으며, 사이트나 앱의 전반적인 성능은 물론 브라우저의 전반적인 성능도 보존할 수 있습니다. 또한, 스레딩을 사용하면 웹 애플리케이션이 최신 멀티 코어 프로세서를 활용할 수 있기 때문에, 단일 코어에서 실행되는 멀티 스레드 애플리케이션보다 훨씬 더 나은 성능을 얻을 수 있습니다.
service worker 라는 특별한 유형의 워커를 생성하여 사용자의 허가를 받아 사이트에서 실행할 수 있습니다. 사용자가 현재 해당 사이트를 사용하지 않는 경우에도 마찬가지입니다. 서비스 워커는 사용자가 사이트에 활성 사용자로써 참여하지 않는 동안 어떤 일이 발생하면 사용자에게 알릴 수 있는 사이트를 만드는 데 사용됩니다. 예를 들어, 사용자가 현재 메일 서비스에 로그인하지 않았음에도 새 이메일을 받았다고 알리는 등의 작업을 수행할 수 있습니다.
전반적으로 우리 운영 체제 내의 이러한 스레드는 매우 유용하다는 것을 알 수 있습니다. 이는 컨텍스트 전환 시간을 최소화하고 보다 효율적인 통신을 가능하게 하며 다중 프로세서 아키텍처를 추가로 사용할 수 있도록 해줍니다.