什么是libuv?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是libuv?相关的知识,希望对你有一定的参考价值。
参考技术A Libuv是Node.js的多平台支持库,主要用于异步I/O。它主要是为Node.js开发的,随着时间的推移,它被广泛用于其他系统,如Luvit、pyuv、Julia等。Libuv基本上是对依赖于平台的libev/IOCP的抽象,为用户提供基于libev的API。libuv的一些重要特性是:● 支持全功能事件循环
● 文件系统事件
● 异步文件和文件系统操作
● 异步TCP和UDP套接字
● 子进程
libuv之一:libuv介绍
介绍
这系列的文章是关于如何使用libuv作为一个高性能I/O库的很小的一部分,它在Windows和Unix上提供相同的API接口。
它将涵盖libuv的主要领域,但不是去讨论每一个功能函数和数据结构的综合参考。
这本书一直在补充,所以它的有些部分可能不完整,但我希望你随着它的成长的同时喜欢上它。
谁需要了解libuv
如果你正在读这本书,你是下列其中之一的:
1:一个系统级别的程序员,创建底层程序,如守护进程或网络服务和客户端。你会发现事件循环方法非常适用于你的应用程序,并决定去使用libuv。
2:一个nodejs模块开发者,想要包装用C或C++开发的一系列同步或异步API接口并暴露给JavaScript,那么你将在nodejs的上下文中完全的使用到libuv。为此,你需要了解本书中没有涵盖的其他一些内容,比如v8/nodejs部分。
本书假设你对C语言很熟悉。
背景
nodejs项目起始于2009年,当时是一个从浏览器解耦出来的一个JavaScript运行环境。使用谷歌的V8引擎和Marc Lehmann的libev,nodejs用一个非常适合编程风格的语言整合了I/O事件(I/O-EVENTED)模型,归功于被浏览器塑造出来的那种方法。随着nodejs越来越流行,使得它在Windows下工作变得非常的重要,但是libev只能在Unix上运行。在Windows中,类似于kqueue或(e)poll的内核事件通知机制是IOCP(Input/Output Completion Port)。libuv是平台下libev或IOCP的抽象,提供了一组基于libev的API接口。在libuv的node-v0.9.0版本中,libev被删除了。
从那时起,libuv变得不断成熟,并成为了一个用于系统编程的高质量独立库,nodejs之外的用户包括Mozilla的Rust编程语言和各种语言的绑定。
本书和代码都是基于libuv v1.3.0版本。
代码
这本书中所有的代码都在github上作为这本书的一部分,下载然后编译libuv
cd libuv
./autogen.sh
./configure
make
不需要使用make install。编译示例需要在code目录下运行make即可
以上是关于什么是libuv?的主要内容,如果未能解决你的问题,请参考以下文章