兩個庫都是為非同步io排程而設計,在linux上都是使用epoll機制,在freebsd上則都是kqueue,還有諸如此類的很多相通之處。
libev的誕生,是為了修復libevent設計上的一些錯誤決策。
例如,全域性變數的使用,讓libevent很難在多執行緒環境中使用。
watcher結構體很大,因為它們包含了i/o,定時器和訊號處理器。
libev試圖改進所有這些缺陷,例如避免使用全域性變數,轉而在所有函式中,使用上下文變數來代替。每個事件型別,使用單獨的watcher型別(乙個i/o watcher在64位機器上,只需要56位元組。而libevent需要136位元組)。允許額外的事件型別,例如基於掛鐘的計時器,或者單調時間,執行緒內中斷,準備並檢查watchers來嵌入其他事件迴圈,或者被用於其他事件迴圈來嵌入。
額外的元件如http和dns伺服器,因為拙劣的實現品質和安全問題而備受折磨。
定時器不精確,而且無法很好地處理時間跳變。
一句話總結,libev嘗試追隨unix工具箱哲學,一次只幹一件事,每次都做到最好。
練習 libev和pyev示例
事件迴圈,io復用,還是理解深刻一點好。比較libev和pyev,發現python庫只是對libev作了簡單的語法轉換。到了這個層次,就乙個字 diao!libev的c版 include include ev io stdin watcher ev timer timeout watcher sta...
libuv和libev 非同步I O庫的比較
libuv和libev,兩個名字相當相近的 i o library,最近有幸用兩個 library 都寫了一些東西,下面就來說一說我本人對兩者共同與不同點的主觀表述。高效能網路程式設計這個話題已經被討論爛了。非同步,非同步,還是非同步。不管是epoll也好,kqueue也罷,總是免不了非同步這個話題...
ubuntu下 libevent庫安裝和簡單測試
解壓縮 tar zxvf libevent 2.1.8 stable.tar.gz cd libevent 2.1.8 stable 依次輸入 configure prefix usr 配置目錄 make sudo make install 檢視是否安裝成功 ls l usr lib grep li...