Application 레벨에서 작동
*이벤트루프 : 콜스택 비어있는지 검사
👨나 : "콜백 수행해줘 "
💻노드js : "오키" (테스크 큐(대기저장 장소)에 콜백 넌다)
♻이벤트루프: "응? 콜스택 비었어 안비었어 비었어 안비었어 비었네"
(테스크 큐에있는 콜백을 콜스택에 넣어야지)
💁♂️자바스크립트로 만들어진 어플리케이션은 싱글 스레드이지만
NodeJS 런타임 환경은 멀티 스레드이기 때문에 위의 상황이 가능하다
nodeJS 어플리케이션은 싱글 메인스레드가 있다
=>어플리케이션에서 필요한 일들을 처리하는 메인스레드가있다
파일을 읽고 쓰고 네트워크 요청을 하는 일들은
nodeJS 제공해주는 API 를 이용해서 할수있다
이때 이벤트 발생처리를 콜백형태로 정의하면 nodeJS가
병렬 적으로 처리한다
장점 : I/O 관련에 좋다 (non-blocking i/o 와 event-driven 방식으로 되있기때문에)
단점 : cpu 에서는 안됨 nodeJS 자체적으로 싱글스레드로 작동
자바스크립트 자체는 싱글스레드이다
그럼 어떻게 이런 싱글스레드를 기반으로 한언어를 사용하는 NODEJS로 성능좋은 서버를 만들수있을까 ?
그것은
자바스크립트 런타임환경에서제공하는
블락킹 : 동기적인것 (하나의 요청 받고 응답 그리고 다음요청 )
논블락킹 : 비동기적인것 (하나의 요청 (callback) 떤지고 응답 없어도 다음요청)
읽고 쓰는것 (읽고 쓰는것)
CPU와 반대되는 개념 (두뇌)
이벤트를 통해 콜백호출 하는것
"야 콜백 하면 나한테 보내