有待修改,先放上代码供参考。
代码:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 105;
typedef int semaphore; //信号量类型
char *buf;
/*缓冲区数据结构*/
typedef struct message_buffer {
char sender;
int Size;
char *text;
struct message_buffer *next;
}message_buffer;
/*进程控制块数据结构*/
typedef struct processcontrol_block {
message_buffer *mq;
semaphore mutex; //互斥信号量
semaphore sm; //资源信号量
}PCB;
/*管程*/
typedef struct process {
char name;
PCB pcb;
void send(process &receiver, message_buffer **message); //发送
void receive(message_buffer *mb); //接收
void print(); //打印出接收到的信息
process() {}
process(char nam) {
name = nam;
pcb.mq = NULL;
pcb.mutex = 1;
pcb.sm = 0;
}
}process;
process *P[2];
/*将消息插入消息缓冲区*/
void Insert(messa