系统编程08-线程池

本文介绍了线程池的相关结构体和核心函数接口,包括线程池初始化init_pool()、添加任务add_task()、增加活跃线程add_thread()、删除活跃线程remove_thread()以及销毁线程池destroy_pool()。通过示例代码thread_pool.h、thread_pool.c和main.c,详细解析线程池的实现和操作。
摘要由CSDN通过智能技术生成

目录

线程池相关结构体

线程池函数接口

1,线程池初始化:init_pool( )

2,投送任务:add_task( )

3,增加活跃线程:add_thread( )

4,删除活跃线程:remove_thread( )

5,销毁线程池:destroy_pool( )

线程池结构模型

示例代码

thread_pool.h

thread_pool.c

main.c 


线程池相关结构体

结构体原型

struct task

功能描述

任务实例,包含需要执行的函数及其参数,通过链表连成一个任务队列

结构体成员

void *(*do_task)(void *arg);

void *arg;

struct task *next;

备注

任务实例最终形成一条单向链表

结构体原型

struct thread_pool

功能描述

线程池实例,包含一个线程池的所有信息

结构体成员

pthread_mutex_t lock; // 互斥锁,保护任务队列

pthread_cond_t cond; // 条件变量,同步所有线程

bool shutdown; // 线程池销毁标记

struct task *task_list; // 任务链队列指针

pthread_t *tids; // 线程ID存放位置

unsigned int waiting_tasks; // 任务链队列中等待的任务个数

unsigned int active_threads; // 当前活跃线程个数

备注

活跃线程个数可修改,但至少有1条活跃线程

线程池函数接口

1,线程池初始化:init_pool( )

原型

bool init_pool(thread_pool * pool,

             unsigned int  threads_number);

功能描述

创建一个新的线程池,包含threads_number个活跃线程

参数

pool: 线程池指针

threads_number: 初始活跃线程个数(大于等于1)

返回值

成功返回true,失败返回false

所在头文件

thread_pool.h

备注

线程池最

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值