libuv之介紹


本人是在研究linux下socket TCP/IP通訊時,用到了一些linux下的API,比如socket, connect, bind,listen, accept等等,簡單寫個點對點的通訊,直接用這些API,再配合Linux下的事件處理機制,或多線程機制,應該都是可以實現的。這里我們就需要考慮的如下一些問題:

1.多個客戶端並發處理時,怎么才能將服務端的負擔降到最低

2.我的應用用到多事件處理,怎么來管理我拉事件 -----可以設計一個隊列來管理

3.線程與事件如何並行使用,怎么防止事件的I/O阻塞問題 ----這些linux下面也有提供處理方法,不過都要自己去實現

...........

以上是在一個舊的項目里遇到的問題,在這個項目里,雖然我們將事件、線程、並發、阻塞這些都考慮全了,但在實際的使用中,偶爾還是會遇到一些瓶頸,比如並發處理時,服務端負擔較大,一般負擔都是因為內存消耗過大,CPU資源被占用太多,而導致這兩點的無非就是多線程、事件循環等的並發事件。

后來,我們就嘗試使用現成的Libuv開源庫,為什么使用它,因為牛X的nodejs的內核就是它,它就是為Nodejs而誕生的,所以可以想到,它有多強大,應該還算穩定,至少目前一些比較牛X的網站都基於nodejs技術,而不是apache, IIS這些了。

下面就來介紹下libuv。

libuv是一個高性能的,事件驅動的I/O庫,並且提供了跨平台(如windows, linux)的API。

libuv的官網:http://docs.libuv.org/en/v1.x/,英文件好的,可以直接參考。

node.js最初開始於2009年,是一個可以讓Javascript代碼離開瀏覽器的執行環境也可以執行的項目。 node.js使用了Google的V8解析引擎和Marc Lehmann的libev。Node.js將事件驅動的I/O模型與適合該模型的編程語言(Javascript)融合在了一起。隨着node.js的日益流行,node.js需要同時支持windows, 但是libev只能在Unix環境下運行。Windows 平台上與kqueue(FreeBSD)或者(e)poll(Linux)等內核事件通知相應的機制是IOCP。libuv提供了一個跨平台的抽象,由平台決定使用libev或IOCP。在node-v0.9.0版本中,libuv移除了libev的內容。

隨着libuv的日益成熟,它成為了擁有卓越性能的系統編程庫。除了node.js以外,包括Mozilla的Rust編程語言,和許多的語言都開始使用libuv。
---------------------
作者:JXES
來源:CSDN
原文:https://blog.csdn.net/linuxandroidwince/article/details/72297630
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

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



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