中山大学软件工程 操作系统原理 蔡国扬 线程池的实现 – Labweek_13

Labwork13 – ThreadPool Implementation

编译环境

实验内容: 设计实现一个线程池 (Thread Pool)

  • 使用 Pthread API
  • FIFO
  • 先不考虑互斥问题
  • 编译、运行、测试用例

实验过程

一、实验准备

  1. 原理理论

首先,我们应该了解,什么是线程池,怎样去实现一个线程池。
通过查找资料我们可以得到如下程序框图:

中山大学软件工程 操作系统原理 蔡国扬 线程池的实现 - Labweek_13

实现函数:

实现细节的原理性分析:

本实验中有关 Pthread API 相关内容在先前实验中已经多次使用,这里不再赘述。

  • 信号量

    这一部分包括了、、、等函数,该部分的功能是实现了一个信号系统,它在各个线程均繁忙的情况下会阻塞任务队列中的内容进入线程,等待有线程空闲后再发送信号允许任务进入,通过我们实现了控制任务队列的进出从而不会产生任务得不到执行的问题。

  • 互斥锁

    本次实验不要求考虑互斥问题,但在实际实现过程中我们发现如果不使用互斥锁对操作进行锁定我们就会出现多个线程同时操纵线程池数据结构的问题,从而导致分支判断失效,实验失败。

    中山大学软件工程 操作系统原理 蔡国扬 线程池的实现 - Labweek_13

    三、实验心得

    通过本次实验,我学习到了线程池的实现原理,能够实现一个简单的线程池供任务进入并执行,在实验过程中遇到了许多的问题,在遇到问题-解决问题的不断循环中拓宽了我对线程的总体了解,增强了自身解决问题的能力,同时对于POSIX编程有了更加全面的认识。

    来源:Интернационал

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月17日
下一篇 2021年4月17日

相关推荐