实验四-同步与互斥-Linux实验报告实验四同步与互斥【实验目的和要求】1、掌握进程(线程)的同步与互斥。2、掌握生产者消费者问题的实现方法。3、掌握多线程编程方法。【实验内容】实现生产者消费者问题1、有一个仓库,生产者负责生产产品,并放入仓库,消费者会从仓库中拿走产品(消费)。2、仓库中每次只能入一个(生产者或消费者)。3、仓库中可存放产品的数量最多10个,当仓库放满时,生产者不能再放入产品。4、当仓库空时,消费者不能从中取出产品。5、生产、消费速度不同。【实验原理】1、信号量mutex提供对缓冲池访问的互斥要求并初始化为1,信号量empty和full分别用来表示空缓冲项和满缓冲项的个数,信号量empty初始化为n,信号量full初始化为0。2、定义如下结构及数据:定义缓冲区内的数据类型:typedefintbuffer_item;缓冲区:buffer_itembuffer[BUFFER_SIZE];对缓冲区操作的变量:intin,out;信号量mutex提供了对缓冲池访问的互斥要求:pthread_mutex_tmutex;信号量empty和full分别表示空缓冲顶和满缓冲顶的个数:sem_tempty,full;可以设定生产者的生产速度及消费者的消费速度:intpro_speed,con_speed;对缓冲区操作的自增函数:#defineinc(k)if(k
#include#include#include#include#defineinc(k)if(k