Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript가 멀티스레딩을 지원하지 않는 이유는 무엇입니까?

<시간/>

JavaScript는 단일 스레드였습니다. 이벤트 루프라고 하는 것을 사용하여 실행됩니다.

이벤트 루프에는 콜 스택과 콜백 큐를 모니터링하는 간단한 작업이 있습니다. 호출 스택이 비어 있으면 대기열에서 첫 번째 이벤트를 가져와 호출 스택으로 푸시하여 효과적으로 실행합니다.

브라우저의 JS는 웹 사이트의 99.999%에 필요하지 않으므로 이벤트 루프에서 멀티스레딩을 지원하지 않습니다. 이벤트 루프는 모든 것을 원활하게 처리합니다.

나머지 앱의 경우 개발자는 웹 작업자를 사용할 수 있습니다. 웹 작업자는 웹 콘텐츠가 백그라운드 스레드에서 스크립트를 실행하는 간단한 수단입니다. 작업자 스레드는 사용자 인터페이스를 방해하지 않고 작업을 수행할 수 있습니다. 또한 XMLHttpRequest를 사용하여 I/O를 수행할 수 있습니다(responseXML 및 채널 속성은 항상 null이지만). 일단 생성되면 작업자는 해당 코드로 지정된 이벤트 핸들러에 메시지를 게시하여(또는 그 반대로) 메시지를 생성한 JavaScript 코드에 메시지를 보낼 수 있습니다. 이 문서에서는 웹 작업자 사용에 대한 자세한 소개를 제공합니다.