生产者消费者问题

来源:互联网 发布:sdk2000数据无效 编辑:程序博客网 时间:2024/05/16 17:11
void producer()
{
message pmsg;
while(true)
{
receive(mayproduce,pmsg)
pmsg=produce();
send(mayconsume,pmsg);
}


void consume()
{
massage cmsg;
while(true);
{
receive(mayconsume,pmsg);
consume(cmsg);
send(mayproduce,null);
}


void main()
{

create_mailbox(mayconsume);
create_mailbox(mayproduce);


为了提供对互斥的支持,必须满足以下要求:
对一个资源来说,同一时刻只允许一个进程在临界区中
一个在非临界区停止的进程必须不干涉其它进程
无死锁和饥饿
当没有进程在临界区中时,任何需要进入临界区的进程必须能够立即进入
对相关进程的速度和处理器的数目没有任何要求和限制
一个进程驻留在临界区中的时间必须是有限的


0 0