1. Nodejs는 서버(?)다
노드 공식사이트에는 노드를 아래와 같이 설명하고있다
Nodejs는 Chrome V8 JavaScript 엔진으로 빌드 된 JavaScript 런타임이다
풀어서 말하면
Nodejs는 브라우저에서만 실행되었던 JavaScript 해석기를 브라우저 바깥에서도 실행시킬 수 있게 하는 실행기(런타임)이다
그 실행기로 서버를 만드는 것
2. Nodejs는 싱글스레드다
노드를 실행시킨 다음 작업관리자로 살펴보면 스레드가 여러개로 뜨는 것을 볼 수 있다
노드의 스레드는 여러개지만 사용자가 컨트롤 할 수 있는 스레드는 하나로 고정되어있기 때문에 싱글스레드라고 표현했던 것
이 처럼 노드는 원래부터 멀티스레드였고, 노드14버전 부터는 멀티스레드를 직접 사용자가 다룰 수 있게 되었다고 한다 (하지만 잘 사용하지 않는 듯)
이쯤되서, 진작에 멀티스레딩을 하지 않은 이유에 대해 궁금할 수 있다
그 이유는 멀티스레딩이 사람의 사고로 쉽게 구현하기 어려울 수 있기 때문이다
그렇기에 노드는 멀티스레딩을 못한 것이 아니라, 프로그래밍의 편의성을 위해 멀티스레딩을 하지 않은 것이다
하긴 정말 싱글스레드만 가능했다면 비동기, 이벤트루프와 같은 개념도 없었을 것이다
+) 노드는 C와 C++로 이루어져있다
출저 : https://www.youtube.com/watch?v=TKBGiqj3yRE&list=PLcqDmjxt30RsGIPBBKX7xl05VuqJeCTFn&index=3
'Node.js' 카테고리의 다른 글
cors 'Access-Control-Allow-Credentials' 헤더 설정 시 주의할 점 (0) | 2023.03.25 |
---|---|
axios 요청 url에 prefix값을 주는 법 (0) | 2023.03.23 |
cors를 설정해야 하는 이유 (sop의 존재이유) (0) | 2023.03.22 |
nodejs에서 자주 쓰는 미들웨어 모듈 (0) | 2023.02.23 |
미들웨어 확장법 (0) | 2023.02.23 |