uv_thread_pool_create 维护最小运行工作线程的示例
时间: 2023-09-06 08:08:13 浏览: 90
线程创建实例
下面是一个使用 `uv_thread_pool_create` 函数来创建线程池并维护最小运行工作线程的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <uv.h>
#define DEFAULT_WORKER_THREADS 4
void work_cb(uv_work_t *req) {
printf("Working...\n");
// 模拟工作
uv_sleep(1);
}
void after_work_cb(uv_work_t *req, int status) {
printf("Work complete.\n");
}
int main() {
uv_loop_t *loop = uv_default_loop();
// 创建线程池
uv_thread_pool_t *pool = malloc(sizeof(uv_thread_pool_t));
uv_thread_pool_create(pool, DEFAULT_WORKER_THREADS);
// 提交工作
uv_work_t req;
uv_queue_work(loop, &req, work_cb, after_work_cb);
// 等待工作完成
uv_run(loop, UV_RUN_DEFAULT);
// 关闭线程池
uv_thread_pool_destroy(pool);
free(pool);
return 0;
}
```
上面的代码创建了一个包含默认工作线程数的线程池,并向该线程池中提交了一个工作。在工作完成后,线程池将自动维护最小运行工作线程数量,直到线程池被销毁。
阅读全文