OS-Lab4-多线程编程基础

arm's blog / 2024-10-21 / 原文

实验目的
事先编辑好数据文件1.dat和2.dat,它们的内容分别为1 2 3 4 5 6 7 8 9 10和 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10。根据示例代码和其运行效果设计一个程序,在这个程序中一共有3个线程,其中两个线程负责从文件读取数据到公共的缓冲区,另外一个线程从缓冲区读取数据作不同的处理(加和乘运算)。
具体要求:

  1. 线程1从1.dat将数据读文件读到buf1中;
  2. 线程2从2.dat 将数据读到buf2中;
  3. 当buf1,buf2有数据时,线程3将buf1和buf2的结果相加和乘法处理,并将结果显示出来;
  4. 要求分别使用互斥锁-条件变量和信号量两种方式实现。
    实验步骤:
    Task1 互斥锁
  5. 代码图:

    2.gcc运行:

    Task2 信号量
    1.代码:

    2.运行: