[JS] 자바스크립트는 싱글스레드인가

soor.dev·2021년 3월 23일
0

Java Script

목록 보기
4/26
post-thumbnail

출처 : https://prohannah.tistory.com/59
출처: https://velog.io/@danmin20/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%9E%91%EB%8F%99%EC%9B%90%EB%A6%AC-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98-%EC%8A%A4%EB%A0%88%EB%93%9C

Process

메모리 상에서 실행 중인 작업이며, 운영체제로부터 시스템 자원(CPU)를 할당받는 작업의 단위이다.

Thread

프로세스 내의 실행 단위를 말하며, 하나일 경우 single thread, 여러 개일 경우 multi thread라고 말한다.
자바스크립트 엔진은 하나의 콜 스택을 갖는 싱글스레드이다. 하지만 웹 브라우저나 node.js와 같은 멀티스레드 환경에 임베디드 되어 실행되기 때문에, 단순하게 싱글스레드 언어라고 말하기 힘들며, Event loop에 대한 이해가 필요하다.


[ keyword ]

  • 브라우저 엔진 : 크롬과 같은 웹 브라우저 엔진으로 다양한 작업을 수행한다.
  • call stack : 자바스크립트에서는 수행해야할 함수를 순차적으로 콜스택에 담아 처리한다.
  • callback queue : 자바스크립트 런타임 환경에서 처리해야 하는 명령어를 임시로 저장하는 대기 라인이다. (event queue)
  • web API : 웹 브라우저에서 제공하는 API로, browser API라고도 말한다.
  • 동시성 (concurrency) : 동시에 처리하는 것 처럼 보이는 것을 말한다.
    비동기 함수의 실행 시,
    콜스택에서 비동기 함수가 실행
    자바스크립트 엔진은 브라우저에서 제공되는 web API에 비동기 작업 위임
    web API는 해당 비동기 작업을 수행 후, 콜백함수를 이벤트루프를 통해 콜백큐에 넘겨줌
    이벤트루프는 콜 스택이 비었을때, 콜백 큐의 콜백함수를 콜 스택으로 넘겨줌
    콜백함수가 실행되고 콜스택에서 제거

0개의 댓글