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

来源:百度知道 编辑:UC知道 时间:2024/05/21 21:24:09
程序尽量设计简单短小易懂,如有说明更好..希望会的朋友多多帮助.小弟把分全送上...
我学文的,一个朋友叫我帮他找的。你能帮做的话你就假设下是一个消费者和一个生产者吧,题目没有规定..

//整个程序以伪代码形式给出,当做一个提示吧,这样你同学就应该有思路了
//程序中有注释部分和需要他自己完善的部分,我给的是框架
//老师只是要求用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);//通知生产者进程可以生产
}

//主函数