Skip to content

jjking619/thread_pool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

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

No packages published