zoukankan      html  css  js  c++  java
  • 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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    STL set
    STL pair
    STL简介
    最长公共子序列lcs
    MySQL常用内置函数整理
    MySQL注入点写webshell的五种方式
    phpAdmin写webshell的方法
    mysql之突破secure_file_priv写webshell
    MySQL提权之启动项提权
    MySQL提权之mof提权
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/9816449.html
Copyright © 2011-2022 走看看