了解libuv
更新記錄
item | note |
---|---|
20160512 | 第一版 |
目錄
libuv
- 參考來源,libuv.org
- libuv is a multi-platform support library with a focus on asynchronous I/O
- 同時實現不平台支援
- node.js在v0.9.0之後去除libev改採用libuv library
- 為了解決:传统输入输出函数(read, fprintf 等)的问题是它们都是 阻塞 的,來源
- Libuv 采用另外一种方式处理阻塞任务, 即 异步 和 非阻塞 方式.大多数现代操作系统都提供了事件通知功能
libuv example 說明
- 此處例啟動之後就會離開,因為沒有事件處理
1 | int main(){ |
uv_loop_new / uv_run
uv_loop_init:
初始化需要的物件內容uv_loop_s
uv_timer_s:
為了讓每個cb(即handle)處理時間一致, 但檢查有i/o在等則馬上設定timeout=0heap_node:
採用heap_node來找需要的handle,以縮短尋找時間uv__io_s: i/o處里event
uv_run
uv_update_time
取得系統時間,為了計算timeoutuv__run_timer
開始處理每個handle,發生timerout則離開,防止阻塞uv__run_pending
- uv__io_poll