-
Notifications
You must be signed in to change notification settings - Fork 0
jjking619/thread_pool
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
项目概述 本项目实现了一个基本的线程池管理系统,旨在通过多线程技术提高程序在处理大量并发任务时的效率和性能。 线程池通过预先创建并管理一定数量的线程来执行提交给它的任务,从而避免了频繁创建和销毁线程的开销。 此项目包括线程池的初始化、任务添加、线程动态增减、以及线程池的销毁等功能。 功能模块 1. 线程池初始化 (init_pool) 功能:创建并初始化一个线程池,指定线程池中的线程数量。 参数: thread_pool *pool:指向线程池结构体的指针。 int thread_num:线程池中线程的数量。 返回值:成功返回0,失败返回-1。 2. 任务调度 (routine) 功能:线程池中每个线程执行的任务调度函数。该函数循环从任务队列中取出任务并执行,若队列为空则线程休眠等待。 参数:void *arg,指向线程池结构体的指针。 3. 添加任务 (add_task) 功能:向线程池的任务队列中添加一个任务。 参数: thread_pool *pool:指向线程池的指针。 void (*fun_task)(void *fun_arg):要执行的任务函数。 void *task_arg:任务函数需要的参数。 返回值:成功返回1 4. 添加线程 (add_threads) ---- 当任务数量大于4且线程数小于最大线程数,添加线程 功能:向线程池中动态添加指定数量的线程。 参数: thread_pool *pool:指向线程池的指针。 unsigned int add_thread_nums:要添加的线程数量。 5. 删除线程 (remove_threads) ----当任务数量小于3且线程数大于最小线程数,删除线程 功能:从线程池中删除一个线程(目前实现为删除最后一个线程)。 参数:thread_pool *pool,指向线程池的指针。 6. 销毁线程池 (destroy_pool) 功能:销毁整个线程池,包括其中的所有线程和任务队列。 参数:thread_pool *pool,指向线程池的指针。 使用说明 初始化线程池:使用init_pool函数创建一个指定线程数量的线程池。 添加任务:通过add_task函数向线程池的任务队列中添加任务。 动态调整线程数:根据需求,可以使用add_threads和remove_threads函数动态增减线程池中的线程数量。 销毁线程池:使用完毕后,调用destroy_pool函数销毁整个线程池。 注意事项: 在多线程环境下,对共享资源的访问(如任务队列)需要通过互斥锁(mutex)进行保护,以避免数据竞争。 完善:例如基于任务队列的长度或系统负载动态调整线程数。 线程池的销毁需要确保所有任务都已执行完毕,以避免资源泄露或未定义行为。
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published