현재 회사에서는 javascript 기반의 node js를 서버 언어로 쓰고있다.
자바스크립트는 기본적으로 비동기적인 작업방식을 가진다.
그래서 자바스크립트로 로직을 구현하다보면 작업을 동기적으로(순서대로) 처리하기위해 async/await나 promise를 써서 처리할때가 많다.
js가 비동기적으로 작업을 처리하도록 만들어져 있는 이유는 싱글스레드 기반의 언어이기 때문이다.
싱글스레드는 순차적으로는 한번에 하나의 일밖에 처리를 하지 못하는데, 그렇게 되면 한번에 여러 일이 들어왔을때 선행하는 일이 끝날때까지 다른 요구사항은 멈춰있게 된다. 이를 blocking이라고 한다.
그래서 자바스크립트는 비동기 방식을 적용하여 한번에 여러 일이 들어오더라도 서비스가 멈추는것처럼 보이는(blocking)일이 없도록 한다.
그런데 왜 싱글스레드인걸까? 싱글스레드를 택해야했던 이유가 무엇일까? 그냥 멀티스레드를 써서 작업을 처리하면 안되는걸까?
이 질문에는 싱글스레드와 멀티스레드를 비교해야 그 이유를 좀 더 정확히 추론할 수 있을 것 같다.
계속)
'Langauge > JAVASCRIPT' 카테고리의 다른 글
for문은 되는데 map은 안됩니다? (0) | 2021.07.16 |
---|---|
response validator joi 사용하기 (0) | 2021.07.01 |
node.js - createstrategy 사용하기 (0) | 2020.11.19 |