libuv线程池示例,参考自官方代码:
libuv-1.8.0\test\test-threadpool.c
#include "uv.h" #include "task.h" static int work_cb_count; static int after_work_cb_count; static uv_work_t work_req; static char data; static void work_cb(uv_work_t* req) { ASSERT(req == &work_req); ASSERT(req->data == &data); work_cb_count++; } static void after_work_cb(uv_work_t* req, int status) { ASSERT(status == 0); ASSERT(req == &work_req); ASSERT(req->data == &data); after_work_cb_count++; } TEST_IMPL(threadpool_queue_work_simple) { int r; work_req.data = &data; r = uv_queue_work(uv_default_loop(), &work_req, work_cb, after_work_cb); ASSERT(r == 0); uv_run(uv_default_loop(), UV_RUN_DEFAULT); ASSERT(work_cb_count == 1); ASSERT(after_work_cb_count == 1); MAKE_VALGRIND_HAPPY(); return 0; } TEST_IMPL(threadpool_queue_work_einval) { int r; work_req.data = &data; r = uv_queue_work(uv_default_loop(), &work_req, NULL, after_work_cb); ASSERT(r == UV_EINVAL); uv_run(uv_default_loop(), UV_RUN_DEFAULT); ASSERT(work_cb_count == 0); ASSERT(after_work_cb_count == 0); MAKE_VALGRIND_HAPPY(); return 0; }
libuv线程池容量设置
线程池的默认个数为4。
如果要修改线程池个数,方法如下:
#include <stdlib.h> setenv("UV_THREADPOOL_SIZE", "12", 1);
setenv是Linux平台函数,windows下对应的是_putenv_s,头文件相同:
_putenv_s("UV_THREADPOOL_SIZE", "12");
如果有多个线程池,且不同线程池容量不同,那么需要每次执行uv_queue_work()之前调用setenv()来设置线程数
相关推荐
* Thread Pool:线程池。 * Signal Handling:信号处理。 * Time Keeping:高精度时钟。 libuv 的文档提供了详细的设计概述、安装指南、API 文档和示例代码等。 libuv 的特点可以总结为: * 跨平台支持,支持多种...
libuv book 中文文档 An introduction to libuv libuv book 中文文档 An introduction to libuv
“This ‘book’ is a small set of tutorials about using libuv [https://github.com/libuv/libuv] as a high performance evented I/O library which offers the same API on Windows and Unix. It is meant to ...
libuv源码 libuv-1.x
libuv is a multi-platform support library with a focus on asynchronous I/O.... * Thread pool * Signal handling * High resolution clock * Threading and synchronization primitives
libuv_tcp, 使用libuv的tcp服务器和客户端包 欢迎来到libuv_tcp维基 !简介:libuv_tcp是一个包含tcp服务器和客户端的C 类,它使用libuv包。用法:请参阅 [ test_tcpserver.cpp ] 1 和 [ test_tcpclient.cpp
libuv 在xp系统下的 vc6.0项目 兼容win xp
libuv中文入门学习书籍
libuv在centos下的编译安装 主要章节: 一、 工具安装 二、 下载libuv源代码 三、 编译安装libuv 四、 测试验证
封装libuv库,可以方便的继承实现自己的功能。便于以后的扩展。
libuv下载
基于libuv库的c++实现的tcp通讯,包括客户端和服务器
libvu官方教程的中文翻译版,详细讲述了libuv各个功能模块的使用方法,适用于刚入门学习libuv的人们
编译好的libuv ,包含dll和引入库lib和头文件,头文件精简后只需要包含uv.h即可
本资源在 debian 9 交叉编译器版本arm-linuxgnueabihf-gcc -v gcc version 6.3.0 20170516 (Debian 6.3.0-18) 下成功编译生成arm-linux下能运行的库,暂时编译成功还没进行测试,
libuv源码+demon,包含计时器、网络、管道、字符流等内容
libuv c++封装最新代码libuv c++封装最新代码libuv c++封装最新代码libuv c++封装最新代码libuv c++封装最新代码libuv c++封装最新代码libuv c++封装最新代码libuv c++封装最新代码libuv c++封装最新代码libuv c++...
用VS2019编译好的LibUV1.33.1的库,里面包含编译好的Release模式的libuv.lib库。
iOS版本libuv.a静态库,支持i386 armv7 armv7s x86_64 arm64
基于VC2015++的libuv 使用范例基于VC2015++的libuv 使用范例基于VC2015++的libuv 使用范例基于VC2015++的libuv 使用范例基于VC2015++的libuv 使用范例基于VC2015++的libuv 使用范例基于VC2015++的libuv 使用范例基于...