Libuv Node js


node.js에서 **비동기**로 처리될 수 있는 이유는 libUV가 제공하는 이벤트루프와 제공된 시스템 커널 API를 이용하기 때문
시스템마다 제공하는 API(윈도우: IOCP, 리눅스: epoll, 맥: kqueue) 이용해서 (네트워크, 파일 I/O등) 비동기 실행과 라이프 사이클을 제공하는 C 라이브러리
네트워크, 소켓 작업은 시스템 API를 이용하며
파일은
> 시스템 API는 제공하나 추상화 문제로 별도의 쓰레드를 이용
> 동기 처리일 경우 시스템 API를 동기 처리는 쓰레드풀을 이용
nodejs는 파일을 읽거나 네트워크 같은 작업을 시스템 또는 다른 쓰레드에게 넘겨주면 시스템 또는 쓰레드는 작업 결과를 콜백으로 큐와 같은 자료구조에 등록
이때 큐는 하나의 큐가 아님



> [[DeepDive] NodeJS C++ Addon 깊게 입문하기](https://aerocode.net/341)

> [nodejs의 내부 동작 원리 (libuv, 이벤트루프, 워커쓰레드, 비동기)](https://sjh836.tistory.com/149)





