libevent和libev的區別對比


參考了這篇文章:

http://www.cnblogs.com/Lifehacker/p/whats_the_difference_between_libevent_and_libev_chinese.html

 

兩個庫都是為異步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工具箱哲學,一次只干一件事,每次都做到最好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM