libuv 采用了 异步 (asynchronous), 事件驱动 (event-driven)的编程风格, 其主要任务是为开人员提供了一套事件循环和基于I/O(或其他活动)通知的回调函数, libuv 提供了一套核心的工具集, 例如定时器, 非阻塞网络编程的支持, 异步访问文件系统, 子进程以及其他功能.

整个libuv的实现都是基于Handle和Request。

 

Handle是:表示能够执行某些操作的长生命周期对象。持续驱动会持续有外部源来触发事件。实际每个handle可以理解就是挂在了一个以前需要启动select监听的内核对象,内核对象事件就会压入loop队列。

Request:对应Handle就是短生命周期对象。对应一个request就只会触发一次响应事件。 对于依赖handle的就会关联handle,没有handle的就直接传入loop来使用loop队列。