Node JS의 싱글스레드 - 1

 안녕하세요. 알렉스 입니다. 이번에는 Node.JS가 왜 싱글스레드를 채용하고 개념에 대해서 알아보도록 하겠습니다. 



일단 스레드를 일종의 직원이라고 보면 됩니다. 스레드가 많을수록 일하는 직원이 많아지는 것인데 Node JS는 단일 스레드를 채택했습니다. 위 그림에서 Client1이 아이스 아메리카를 주문하고 있습니다.



이때 Node직원이 응답을 하고 아이스 아메리카노를 만듭니다. 첫 그림의 메뉴에서 아이스 아메리카노는 약 10초간의 시간이 소요됩니다. 


10초가 지난후 Node직원은 아이스 아메리카노를 Client1에 제공을하고 이후 업무를 종류하게 됩니다. 하지만 지금은 단일 client1의 요청이고 복수의 요청이 들어오면 어떻게 될까요?



위 그림처럼 여러 client가 줄지어 요청을 할때 Node가 첫번째 client의 요청을 듣고 작업을 수행한후 완료할때까지 10초가 걸립니다. 그리고 다음 손님또한 요청을 받고 그만큼 시간이 걸립니다. 이때 마지막 손님은 앞의 모든 손님들의 주문이 완료될때까지 기다려야하는데 그렇게 되면 인내심이 바닥나서 가게를 나갈수가 있습니다.




 일단 주문을 한꺼번에 받습니다. 그리고 바로 받은 요청에 대해서 작업을 실행합니다. 






 첫 줄의 손님은 아이스 아메리카노를 요청했기 때문에 10초만에 음료가 준비 됩니다.





두번째, 세번째 손님도 주문한 순서대로 음료를 받게 됩니다. 하지만 중간에 상당히 오래 걸리는 주문을 하게 되면 어떻게 될까요. 순차적으로 주문을 받는데 중간에 악마의 음료를 주문해서 그 뒤로 주문한 사람이 오랫동안 기다려야 할까요?


이 내용은 다음 블로그 글에서 알려드리도록 하겠습니다.


다음글 : Node JS의 싱글스레드 -2









댓글

이 블로그의 인기 게시물

Lesson 12_1 프로퍼티 노드(Property Node)

DAQ로 전압 측정하기-2

Nest JS URL에 있는 쿼리(Query) 읽기