libuv之一:libuv介绍

Posted 风吹大风车

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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之一:libuv介绍的主要内容,如果未能解决你的问题,请参考以下文章

从libuv源码学习线程池

从libuv源码学习线程池

编译Libuv

什么是libuv?

libuv之二:libuv基础

libuv:fork 和 uv_spawn 的区别?