# thread_pool **Repository Path**: diabio/thread_pool ## Basic Information - **Project Name**: thread_pool - **Description**: 这是一个用c实现的一个线程池 - **Primary Language**: C - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-04-28 - **Last Updated**: 2025-06-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: C语言, cmake ## README # C 线程池实现 这是一个用 C 语言实现的线程池库,提供了简单且高效的线程池功能。支持动态创建线程、任务队列管理以及优雅关闭等特性。 ## 特性 - 支持固定数量的核心线程 - 动态创建额外线程处理任务高峰 - 使用循环队列管理任务 - 提供优雅关闭和立即关闭两种模式 - 线程安全的实现 - 完善的错误处理机制 ## 构建 项目使用 CMake 构建系统。按照以下步骤构建: ```bash # 创建构建目录 mkdir build && cd build # 生成构建文件 cmake .. # 编译 make ``` ## 使用示例 ```c #include "thread_pool.h" #include // 定义任务函数 void task_function(void* arg) { int num = *(int*)arg; printf("执行任务: %d\n", num); } int main() { // 创建线程池:最大4线程,初始2线程,任务队列大小10 ThreadPool_t* pool = threadPoolCreate(4, 2, 10); if (pool == NULL) { printf("创建线程池失败!\n"); return 1; } // 添加任务 int arg = 42; threadPoolAddTask(pool, task_function, &arg); // 等待任务完成后关闭线程池 threadPoolGracefulDestroy(pool); return 0; } ``` ## API 说明 ### 创建线程池 ```c ThreadPool_t* threadPoolCreate(int threadMaxNum, int threadStartNum, int taskQueueSize); ``` - `threadMaxNum`: 最大线程数 - `threadStartNum`: 初始线程数 - `taskQueueSize`: 任务队列大小 ### 添加任务 ```c int threadPoolAddTask(ThreadPool_t* threadPool, TASKFUNC taskfunc, void* args); ``` - `threadPool`: 线程池实例 - `taskfunc`: 任务函数 - `args`: 任务参数 ### 关闭线程池 ```c // 优雅关闭(等待所有任务完成) int threadPoolGracefulDestroy(ThreadPool_t* threadPool); // 立即关闭 int threadPoolDestroy(ThreadPool_t* threadPool); ``` ## 错误码 - `THREAD_POOL_SUCCESS`: 操作成功 - `THREAD_POOL_INVALID_ARG`: 无效参数 - `THREAD_POOL_QUEUE_FULL`: 任务队列已满 - `THREAD_POOL_SHUTDOWN`: 线程池已关闭 - `THREAD_POOL_TIMEOUT`: 操作超时 ## 注意事项 1. 任务函数应该是非阻塞的,或者控制好执行时间 2. 注意任务参数的生命周期,确保在任务执行时参数依然有效 3. 优雅关闭会等待所有任务完成,可能需要一定时间 4. 立即关闭会丢弃未执行的任务