一、问题描述
假设系统中只有一个公共的消息缓冲区,每次只能容纳一个消息。发送消息。需要把消息从发送进程空间拷贝到公共消息缓冲区;接送消息,则需要把消息从公共消息缓冲区拷贝到接受进程空间。现有三个发送消息进程PS1、PS2、PS3,分别需要周期性地发送M1、M2、M3三种消息,另有三个接受消息进程PR1、PR2、PR3,分别需要接受M1、M2、M3消息并处理。试用信号量和PV操作实现这六个进程间地正确同步。
🎈简单点说,就是三个进程分别发送三种信息,又有三种进程分别接受对应三种的信息。
二、问题求解
📌:
semaphore empty=1;
semaphore Mi=0;//i=1,2,3;
PSi(i=1,2,3)
{
while(1)
{
P(empty);
发送种类为Mi的一个消息;
V(Mi);
}
}
PRi(i=1,2,3)
{
while(1)
{
P(Mi);
接受缓冲区中Mi消息;
V(empty);
}
}
🛵今天的这个问题相对简单,设置一个变量表示对应的信息种类即可。溜了~