libuv提供跨平台的事件驱动异步I/O能力,那行,那我们先来看一下libuv的Design overview框图吧。
图片看上去不错,还特别explicit的强调了对多个平台上的异步I/O的API进行了封装,如Linux下的epoll、FreeBSD下的kqueue、Solaris下的event ports、Windows下的IOCP。网上有很多文章都对各个平台上的异步IO进行了研究,得出哪些是真异步哪些是伪异步,听说windows平台上的IOCP是真异步。当然了高手用伪异步写出来的服务器肯定还是比本屌用真异步堆出来的服务器性能要好的。
本来libuv是为nodejs开发的,然而现在也有很多其他项目(https://github.com/libuv/libuv/wiki/Projects-that-use-libuv)用到了libuv。但是话又说回来,既然它选择了异步IO编程模型,就是说它是追求极致的,也就意味着大型软件只用它来开发一些功能模块,所以到头来还得去找别的c++库用,而且libuv开发出来的模块颜值不好看。
那么如何使用libuv呢?
下载libuv
libuv目前托管在github上(https://github.com/libuv/libuv),找到Downloading,再找到downloads site超链接。github打不开的话就直接点这里吧downloads site.
进去以后,找到最新的版本,注意:日期最新的才是最新的版本(我就因此上过一次当,本来想下载最新的v1.12.0,结果下载列表的最下面居然是v1.9.1的版本)
好了,好了,来看看我这里的最新版本v1.12.0里面都有些什么玩意吧。看图。
这样的话,一共有两种方式来使用libuv了。
1,源代码。这个需要编译,体现了跨平台特性。
2,DLL。都提供了DLL了,这样的话window平台连编译都省了,直接用,作品感人。
直接使用DLL
这个比较简单。
如果想使用x86的DLL,那就下载libuv-x86-v1.12.0.build7.exe
如果想使用x64的DLL,那就下载libuv-x64-v1.12.0.build7.exe
不过要对应起来,如果你下载了x84的DLL,那你使用visual studio编译链接自己程序的时候要确保平台使用win32的方式&