参考网址:https://github.com/libuv/libuv/blob/master/README.md
https://www.cnblogs.com/cnxkey/articles/10058702.html
一、libuv的安装
1、windows下安装(这里使用vs2017进行编译)
-
下载libuv:https://github.com/libuv/libuv
-
下载gyp(https://github.com/turbulenz/gyp)解压后放在libuv/build下
-
gyp安装需要python环境,下载Python2.x(https://www.python.org/ftp/python/2.7.13/python-2.7.13.msi)安装并配置环境变量
-
gyp安装:cmd进入libuv/build/gpy下,执行:setup.py install
-
打开vs2017编译工具,这里编译32位debug版本 (开始->vs2017->x86 tools,右键以管理员权限运行)

-
libuv安装:切换到工程目录执行 vcbuild vs2017
-
完成后,在工程Debug/lib下会生成.lib库,将工程的include和.lib库拷贝出来即可使用
2、linux下安装
-
下载libuv:https://github.com/libuv/libuv
-
解压 tar -zxvf libuv-v1.32.0.tar.gz
-
如果缺少libtool库的话,请安装 yum install libtool
-
sh autogen.sh
-
./configure
-
make
-
make check (有错误可不理会)
-
make install
-
创建软连接 ln -s /usr/local/lib/libuv.so.1 /usr/lib64/libuv.so.1
二、libuv的使用
1)、windows下使用
1、创建vs2017 新项目
2、包含目录添加libuv头文件,库目录添加libuv的.lib库

3、附加依赖项添加所需的lib库 忽略LIBCMTD库造成的冲突
附加依赖项:
libuv.lib
ws2_32.lib
iphlpapi.lib
Userenv.lib
Psapi.lib
忽略特定的默认库:LIBCMTD

4、编译项目即可
2)linxu下使用
1、执行 g++ test.cpp -luv 即可
二、libuv多线程tcp客户端和服务器编程
可参考代码的网址:https://github.com/wangdamingll/libuv.git
代码是用vs2017编写的,如果在linux上编译错误 请自行去除平台差异头文件
这里需要去除 #include "pch.h",这是vs2017是用的头文件
1、多线程tcp客户端
请查看上面网址 LibuvClient.cpp 的文件
2、多线程tcp服务端
请查看上面网址 LibuvServer.cpp 的文件
三、libuv多线程tcp client/server思考
1、libuv官方给出的是单线程异步I/O的示例,正常来说应该够一般使用了,这里提供的多线程只是提供参考
2、libuv提供了uv_queue_work(),如果在服务器的accept之后,将任务推送给内部的线程池处理,但是由于tcp服务器的tcp数据是具有连续性的,采用上述方式的后果就是tcp数据可能不再有连续性,造成了乱序包,还需要添加其他逻辑去调整为正常的连续包,个人认为不可采取
3、我在官网上看到,libuv的函数,只有uv_async_send()函数是线程安全的,但是下面的代码(上面代码地址上的server):


本文详细介绍了libuv库在Windows和Linux环境下的安装步骤,包括所需依赖库的获取与配置,并探讨了libuv在多线程TCP客户端和服务端的应用。文章还讨论了多线程编程在libuv中的潜在问题及解决方案。
1078

被折叠的 条评论
为什么被折叠?



