위키득계정 ↗
기술

libuv

libuv기술
주요 분야
이벤트 기반 비동기 입출력
핵심 구성
이벤트 루프와 핸들 및 요청
네트워크 처리
논블로킹 소켓
파일 처리
스레드 풀
libuv는 이벤트 기반 비동기 입출력을 제공하는 다중 플랫폼 라이브러리다. 이벤트 루프와 소켓 및 파일 작업과 스레드 기능을 공통 인터페이스로 연결하며 Node.js 등 여러 실행 환경의 기반으로 사용된다.

핸들과 요청의 구분

핸들은 연결이나 타이머처럼 활성 상태를 유지하며 사건을 처리하는 객체를 나타낸다. 요청은 쓰기나 이름 조회처럼 비교적 짧게 끝나는 개별 작업을 나타낸다. 두 추상화를 이벤트 루프와 함께 사용해 입출력의 상태와 동작을 구성한다.

루프의 실행 스레드

이벤트 루프는 하나의 스레드에 연결되며 네트워크 입출력도 그 루프의 스레드에서 처리한다. 플랫폼의 epoll과 kqueue 및 IOCP 같은 기능을 이용해 사건을 확인하고 콜백을 실행한다. 여러 루프를 사용할 수 있지만 각 루프는 서로 다른 스레드에서 실행해야 한다.

스레드 풀로 다루는 작업

파일 입출력과 일부 DNS 함수 및 사용자가 지정한 작업은 공통 스레드 풀에서 처리한다. 따라서 비동기 인터페이스를 제공한다고 모든 작업의 내부 실행 방식이 같은 것은 아니다. 파일 변경 감시와 프로세스 및 신호 같은 주변 기능도 제공한다.

관련 문서

libevent / Node.js / API / 스레드 / 네트워크 / 비동기 프로그래밍