生产者消费者问题c语言实现windows,用C语言编写程序:生产者和消费者之间实现同步与互斥问题...

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

woliumoran

推荐于 2017.12.16

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:46%    等级:12

已帮助:3950人

//整个程序以伪代码形式给出,当做一个提示吧,这样你同学就应该有思路了

//程序中有注释部分和需要他自己完善的部分,我给的是框架

//老师只是要求用C程序模拟这个机制来实现,就是通过你所学的知识模拟一个效果即可

//利用P,V操作使得在同一时刻,生产者和消费者只能有一个对存储区操作(即临界区)。

//如果两者同时对存储区操作,即同时取和生产的话,必定会有一个等待,当另一个完成操作后自己才会被唤醒。

//生产者在存储区满时不能再生产,进入等待,消费者同理

//完成同步互斥效果

//希望对你朋友有启发

/*----以下为代码部分-----*/

//定义全局变量

int empty = 1;//信号量表示存储单元空,可以生产产品

int full = 0;//信号量表示存储单元空,不可以消费产品

//P操作

void P(int &mutex)

{

*mutex--;

if(*mutex<0)

{

//当前进程挂起的程序实现

}

}

//V操作

void V(int &mutex)

{

*mutex++;

if(*mutex <=0)

{

//唤醒等待中的进程程序实现

}

}

//生产者程序

void producer()

{

P(& empty);//若此时存储区空,则可以生产,否则程序挂起等待

//生产一个产品操作

V(&full);//通知消费者进程,可以取产品

}

//消费者程序

void consumer(){

P(&full);//若此时存储区不空,则可以取产品,否则消费者程序挂起等待

//取走一个产品操作

V(& empty);//通知生产者进程可以生产

}

//主函数

void main()

{

//分别调用生产者,消费者程序,顺序不限,因为已经完成信号量的同步,若发生同步问题就会等待

producer();

consumer();

consumer();

producer();

………………

}

10分享举报

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值