实验四 同步与互斥 【实验目得与要求】1、掌握进程(线程)得同步与互斥
2、掌握生产者消费者问题得实现方法
3、掌握多线程编程方法
【实验内容】实现生产者消费者问题1、有一个仓库,生产者负责生产产品,并放入仓库,消费者会从仓库中拿走产品(消费)
2、仓库中每次只能入一个(生产者或消费者)
3、仓库中可存放产品得数量最多 1 0个,当仓库放满时,生产者不能再放入产品
4、当仓库空时,消费者不能从中取出产品
5、生产、消费速度不同
【实验原理】1、 信号量 mu tex提供对缓冲池访问得互斥要求并初始化为 1,信号量 e mpty 与 full 分别用来表示空缓冲项与满缓冲项得个数,信号量 emp t y 初始化为 n,信号量 f u ll 初始化为0
2、定义如下结构及数据: 定义缓冲区内得数据类型:type d ef in t b u ffer_it em; 缓冲区 :b uffer_item b uffe r[B UF F E R_SI Z E];对缓冲区操作得变量:i n t i n,o u t; 信号量 m u tex 提供了对缓冲池访问得互斥要求:pthre a d_mu t ex_t m utex; 信号量 empty 与 full 分别表示空缓冲顶与满缓冲顶得个数:s e m_t empty,f u ll; 可以设定生产者得生产速度及消费者得消费速度 :i nt p r o_spe e d,co n_speed;对缓冲区操作得自增函数:#define i n c(k) if(k < BUFFER_S I Z E) k = k+1;e l se k=03、并定义了如下实现问题得函数模块: 将生产得产品放入缓冲区: int inser t_i t e m(buffer_ite m i tem) 从缓冲区内移走一个产品: i nt remo v e_i t e m(b