Labwork13 – ThreadPool Implementation
编译环境
实验内容: 设计实现一个线程池 (Thread Pool)
- 使用 Pthread API
- FIFO
- 先不考虑互斥问题
- 编译、运行、测试用例
实验过程
一、实验准备
- 原理理论
首先,我们应该了解,什么是线程池,怎样去实现一个线程池。
通过查找资料我们可以得到如下程序框图:
实现细节的原理性分析:
本实验中有关 Pthread API 相关内容在先前实验中已经多次使用,这里不再赘述。
-
信 量
这一部分包括了、、、等函数,该部分的功能是实现了一个信 系统,它在各个线程均繁忙的情况下会阻塞任务队列中的内容进入线程,等待有线程空闲后再发送信 允许任务进入,通过我们实现了控制任务队列的进出从而不会产生任务得不到执行的问题。
-
互斥锁
本次实验不要求考虑互斥问题,但在实际实现过程中我们发现如果不使用互斥锁对操作进行锁定我们就会出现多个线程同时操纵线程池数据结构的问题,从而导致分支判断失效,实验失败。
三、实验心得
通过本次实验,我学习到了线程池的实现原理,能够实现一个简单的线程池供任务进入并执行,在实验过程中遇到了许多的问题,在遇到问题-解决问题的不断循环中拓宽了我对线程的总体了解,增强了自身解决问题的能力,同时对于POSIX编程有了更加全面的认识。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!