어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다.
스레드는 CPU 활용의 기본 단위로, 프로그램 카운터, 스택, 레지스터들, 그리고 스레드 ID로 구성되어있음
싱글 스레드 프로세스는 한 개의 레지스터와 스택을 가진다.
하지만, 멀티 스레드 프로세스에서는 code, data, file은 공유하지만 각 스레드가 레지스터와 스택은 따로 사용한다고 한다.
→ 각 스레드가 독립적인 프로그램 카운터(레지스터)와 스택을 가지면서 자신만의 실행 흐름을 가질 수 있게 되고, 동시에 한 프로세스에서 여러 작업을 처리할 수 있게 된다.
단점에 있던 스레드 생성 시간 문제를 해결하기 위해서 미리 스레드를 만들어두는 방법
node는 싱글 스레드로 동작한다고 알려져 있습니다. (싱글스레드 논블로킹)
우리가 앞서 본 바에 따르면 싱글 스레드 프로세스에서는 한 번에 한개의 작업만 수행할 수 있는것으로 보이는데, nodejs는 어떻게 싱글 스레드 프로세스에서 여러 작업을 동시에 수행 할 수 있었을까요?!
그 이유는 노드가 논블로킹 IO를 지원하기 때문인데요!
노드에서는 Libuv를 사용해 IO를 백그라운드에서 처리하고 그 결과를 받아 처리합니다. → libuv는 멀티스레드로 작동한다고 한다.