文档介绍:操作系统生产者与消费者源代码
操作系统生产者与消费者源代码
操作系统生产者与消费者源代码
/*生产者/消费者*/
#include<〉
#include<malloc.h〉
#include<iostream.h>
struct PCB
{
int flag;ﻩ//1为生产者,2为消费者
ﻩint numLabel;
};
typedef struct QNode
{
ﻩPCB data;//数据域
ﻩstruct QNode* next;//指针域
}QNode, *QueuePtr;
typedef struct
{
ﻩQueuePtr front;//队头指针
ﻩQueuePtr rear;//队尾指针
}LinkQueue;
typedef struct LNode
{
ﻩQueuePtr data;
struct LNode *next;
}LNode, *LinkList;
void QueueInit(LinkQueue &Q)//初始化队列
{
ﻩQ。front = Q。rear = (QueuePtr)malloc(sizeof(QNode));
ﻩQ.front->next = NULL;
}
void LinkListInit(LinkList& L)//初始化链表
{
ﻩL = (LinkList)malloc(sizeof(LNode));
}
操作系统生产者与消费者源代码
操作系统生产者与消费者源代码
操作系统生产者与消费者源代码
void EnQueue(LinkQueue &Q, QueuePtr p)//入队
{
ﻩp—〉next = NULL;
->next = p;
ﻩQ。rear = p;
}
QueuePtr DeQueue(LinkQueue &Q)
//出队
{
ﻩQueuePtr p = Q。front—>next;
->next = p->next;
if( == p) =Q。front;
ﻩreturn p;
}
void outqueue(LinkQueue& Q)
{
QueuePtr p = Q.front->next;
ﻩQ。front-〉next = p—〉next;
if( == p) =Q。front;
}
void LinkListInsert(LinkList &L, QueuePtr e)//进入链表
{
ﻩLinkList p = L;ﻩ
ﻩLinkList q = (LinkList)malloc(sizeof(LNode));
ﻩwhile(p->next)p++;
ﻩq—>data = e;
ﻩq—〉next = NULL;
p->next = q;
}
void processproc(LinkQueue &Q)//创建进程进入初始队列
{
ﻩint processNum = 0;
cout<<”请输入进程的个数:";//确定进程个数,默认为0
cin>>processNum