介紹:
這本“書”是一組關於如何使用libuv作為高性能事件I/O庫的一系列小的教程,它在Windows和Unix上提供相同的API。
它將涵蓋libuv的主要領域,但不是討論每個函數和數據結構的全面參考。
這本書仍在進行中,所以部分可能不完整,但我希望你會喜歡它的成長。
誰需要了解libuv:
如果你正在讀這本書,如果你是下列其中之一:
- 系統程序員,創建底層程序,如守護進程或網絡服務和客戶端。您已經發現事件循環方法非常適合您的應用程序,並決定使用libuv。
- 一個node.js模塊編寫者,他想將用C或c++編寫的平台api與一組暴露於JavaScript的同步/異步api打包。您將純粹在node.js的上下文中使用libuv。為此,你需要一些其他的資源,因為這本書沒有涵蓋特定於v8/node.js的部分。
注明:這本書假設你對C編程語言很熟悉。
背景:
node.js項目始於2009年,當時是一個與瀏覽器解耦的JavaScript環境。使用谷歌的V8和Marc Lehmann的libev, node.js結合了I/O模型-事件-語言非常適合編程風格;因為它被瀏覽器塑造的方式。隨着node.js越來越流行,讓它在Windows上工作很重要,但libev只能在Unix上運行。在Windows中,類似於kqueue或(e)poll的內核事件通知機制是IOCP。libuv是libev或IOCP的抽象,取決於平台,為用戶提供一個基於libev的API。在libuv的node-v0.9.0版本中,libev被刪除了。
從那時起,libuv不斷成熟,並成為一個用於系統編程的高質量獨立庫。node.js之外的用戶包括Mozilla的Rust編程語言和各種語言綁定。 本書及其代碼基於libuv v1.3.0版本。
代碼:
這本書的所有代碼都包括在Github上作為這本書的源代碼的一部分。復制/下載這本書,然后構建libuv:
1 cd libuv 2 ./autogen.sh 3 ./configure 4 make
不需要進行安裝。要構建示例,請運行code/目錄中的make。