线程池 落日映苍穹つ 2022-12-12 15:05 4阅读 0赞 一、线程池资源。 线程池接口设计说明书.doc -> 关于线程池中接口使用:参数,头文件,原型,返回值.. pool\_test/ -> 线程池源码以及小例子。 main.c -> 使用线程池接口实现的一个小例子。 thread\_pool.c -> 线程池源码 thread\_pool.h -> 线程池函数声明,结构体声明,宏定义。 二、线程池原理。 1、 线程池意义? 可以同时处理多个任务。 2、 线程池机制? 线程池好比是一家公司,一边不断接收任务,员工就一边不断去处理任务。 生产者: 专门投放任务到线程池的任务。 消费者: 处理任务的这些线程。 3、 如何描述一个线程池状态? -> 结构体 struct task \{ void \*(\*do\_task)(void \*arg); //函数指针 void \*arg;//参数 struct task \*next; \}; typedef struct thread\_pool \{ pthread\_mutex\_t lock; //互斥锁 pthread\_cond\_t cond; //条件变量 bool shutdown; //线程池标志位: true -> 关闭 flase -> 开启 struct task \*task\_list;//指向一条任务链表的链表头 pthread\_t \*tids; //存储全部线程的ID号。 unsigned max\_waiting\_tasks; //最大的等待任务个数 unsigned waiting\_tasks; //当前正在等待任务个数 unsigned active\_threads; //当前线程池中有多少条线程 \}thread\_pool; 三、分析函数接口。 1、 初始化线程池。 -> init\_pool() 原型: bool init\_pool(thread\_pool \*pool, unsigned int threads\_number); 参数: pool:线程池的地址 threads\_number:线程池初始化线程的条数。 功能: 初始化一些值,设置一些值,创建线程。 2、 投放任务。 -> add\_task() 原型: bool add\_task(thread\_pool \*pool,void \*(\*do\_task)(void \*arg), void \*arg) 参数: pool:线程池的地址。 do\_task: 需要处理的任务的函数接口。 arg:传递给函数接口的参数 功能:将新任务弄成一个节点,然后将节点尾插为任务队列后面。 3、 线程的例程。 功能:拿走任务队列中的一个节点,然后执行该节点中的函数。 4、 添加线程。 -> add\_thread() int add\_thread(thread\_pool \*pool, unsigned additional\_threads) 参数: pool:线程池的地址 additional\_threads:线程池新增线程的条数。 功能: 添加一个新的线程到线程池。 5、 删除线程。 -> remove\_thread() int remove\_thread(thread\_pool \*pool, unsigned int removing\_threads) 参数: pool:线程池的地址 removing\_threads:线程池删除线程的条数。 功能: 删除线程池中的一些线程。 6、销毁线程池。 关闭线程池,唤醒所有小孩起来退出。
相关 Java 线程池、Runnable线程池、Callable线程池 线程池: 其实就是一个容纳多个线程的容器,其中的线程可以反复的使用,省去了频繁创建和销毁过程对象的操作,无需反复创建线程面消耗过多资源。 为什么要用线程池: 合理 青旅半醒/ 2023年02月26日 12:30/ 0 赞/ 58 阅读
相关 线程、线程池 创建线程的3种方法: package com.frank.threadPool.createThread; / @author 小石潭记 布满荆棘的人生/ 2022年10月22日 04:27/ 0 赞/ 388 阅读
相关 线程池 1.所谓线程池,就是程序的初始化阶段,就预先创建一批线程,每个线程都做好准备干活; 2.然后有一个任务列表,一开始为空,当有任务来了,就往任务列表里面添加;这个任务列表 痛定思痛。/ 2022年06月13日 13:22/ 0 赞/ 331 阅读
相关 线程池 西施越溪女,明艳光云海 最近用线程池和不用线程池做了个速度的测试,在这里备注下: 结果是速度不相上下; public static void main(Str 妖狐艹你老母/ 2022年05月20日 02:35/ 0 赞/ 285 阅读
相关 线程池 线程池 Java里面线程池的顶级接口是 java.util.concurrent.Executor , 但是严格意义上讲 Executor并不是一个线程池,而只是一个 迈不过友情╰/ 2022年03月06日 14:34/ 0 赞/ 403 阅读
相关 线程池 线程池 > 从字面义上来讲,是指管理一组同构工作线程的资源池。线程池是与工作队列密切相关的,其中在工作队列中(Worker Queue)保存了所有等待执行的任务。工作者( 清疚/ 2021年12月11日 03:35/ 0 赞/ 389 阅读
相关 线程池 可preStart一个或全部core thread 0,小于core则来一个任务建一个线程(firstTask),队列,额外线程,拒绝 一个AtomicInteger的 今天药忘吃喽~/ 2021年11月23日 03:40/ 0 赞/ 415 阅读
相关 线程池 1、先创建线程池 import java.util.concurrent.ArrayBlockingQueue; import java.util.concu 拼搏现实的明天。/ 2021年11月09日 14:28/ 0 赞/ 425 阅读
还没有评论,来说两句吧...