"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 자바스크립트는 단일 스레드가 아닙니다!!

자바스크립트는 단일 스레드가 아닙니다!!

2024-07-31에 게시됨
검색:604

아니요! 당신은 JavaScript가 단일 스레드 언어라는 것을 잘못 배웠습니다. 코드를 실행하기 위해 단일 메인 스레드에 액세스할 수 있는 단일 스레드 언어입니다. 따라서 동기 프로그래밍에 대해 이야기할 때 우리는 코드를 무거운 작업과 실행을 모두 수행하는 이 외로운 스레드에 대해 이야기합니다.
Image description

그러나 실제로 V8 엔진과 Node.js는 libuv라는 c 라이브러리를 사용하여 6개의 추가 스레드에 액세스합니다. 이 중 두 개는 가비지 수집을 수행하는 데 사용되고 나머지는 비동기 프로그래밍과 같은 백그라운드 작업을 수행하는 데 사용됩니다.

예. 코드가 비동기적이거나 비차단적이라고 말할 때 실제로 일어나는 일은 비동기 코드가 콜백과 함께 이러한 추가 스레드로 전달되고 메인 스레드가 나머지 코드를 차단하지 않고 작업을 계속 수행한다는 것입니다.

Javascript is NOT single threaded!!
비동기 코드가 완료되면 콜백 함수가 오류 또는 필수 데이터와 함께 이벤트 큐로 푸시됩니다. 그런 다음 이벤트 루프는 이를 호출 스택에 푸시하고 결과를 얻어서 일부 코드로 이를 이해합니다. fs 모듈의 readfile 메소드를 살펴보겠습니다.

fs.readFile("demo.text","utf8",(err,data)=>{
    if(error){       
        return error
    }
    console.log("output",data);
})

위의 코드에서 readfile 메소드는 백그라운드 스레드로 전달됩니다. 읽기 작업은 백그라운드에서 이루어지며 작업이 완료되면 콜백이 오류나 데이터와 함께 이벤트 큐로 푸시됩니다.

Javascript is NOT single threaded!!

콜스택에 들어가면 콜백이 실행되고 오류나 데이터가 출력으로 남습니다.
읽어주셔서 감사합니다. Javascript의 싱글 스레드 방식에 대해 설명할 수 있었으면 좋겠습니다.

릴리스 선언문 이 기사는 https://dev.to/roshankbadola/javascript-is-not-single-threaded-3b9a?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]에 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3