Thread

Sat.Af·2021년 3월 3일
0
  • 아래와 같은 말들을 들은 적이 있다.

    • 자바스크립트는 싱글스레드다. 컴퓨터가 여러 개의 CPU를 가지고 있어도 메인스레드라 불리는 단일 스레드에서만 작업을 실행할 수 있다.
    • Node.js는 싱글스레드 논블럭킹 IO다.
  • 스레드가 뭐지?

    • 프로세스의 특정한 수행경로

    • 각 스레드는 한 번에 하나의 작업만 수행할 수 있다.

    • 대부분의 컴퓨터는 코어가 여러개니까 무조권 멀티스레드가 가능하겠네? -> NO (자바스크립트는 싱글스레드)

  • 싱글스레드의 단점: 중간의 TaskB를 처리하는데 시간이 오래걸린다면? TaskC로 넘어가지 못함. 유저 입장에서는 답답함을 느낌

    Main thread: TaskA --> TaskB --> TaskC

  • 싱글스레드가 있으니 또 다른 종류인 멀티스레드라는 것도 존재하나?

    • 존재한다. 자바스크립트는 싱글 쓰레드로 동작하지만 웹 워커를 사용하면 브라우저에서 멀티 쓰레드를 활용할 수 있다. (웹 워커에게 복잡한 계산을 담당하게 넘기면, 메인스레드에서 복잡한 계산을 하느라 UI적으로 0.1s안에 반응을 해야하는 원칙을 어길 일이 없게 된다.)

      Main thread: Task A --> Task C
      Worker thread: Expensive task B

    • 그러나 Web worker는 DOM에 접근할 수 없다. UI를 업데이트 할 수 없다.

0개의 댓글