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
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自www.cnblogs.com/h2zZhou/p/9816449.html