⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sendreceivemechanism.cpp

📁 众所周知操作系统由很多的通信机制
💻 CPP
字号:
#include <iostream>
#include<fstream>
#include <algorithm>
#include "sendreceivemechanism.h"

void user0send(boxuser &boxuser0,box &mybox)
{
	if (mybox.full==true)//信箱满了,则将boxuser0的等待标志置一
	{
		boxuser0.waitsend=1;//有消息等待发送
		cout<<"信箱满了!等会儿在发"<<endl;
	}
	else
	{
		letter temp;
		temp.distination=1;//目标地址user1
		temp.cont=boxuser0.send.cont;
		temp.size=boxuser0.send.size;
		mybox.letters1.push_back(temp);// 放在发给user1的队列中
		mybox.length+=1;
		boxuser0.waitsend=0;
		if(mybox.empty==1)
			mybox.empty=0;//信箱不空
		if (mybox.length==BOXCAP)
		{
			mybox.full=true;//信箱满
		}
	}
}

void user0recieve(boxuser &boxuser0,box &mybox)
{
	if (mybox.letters0.empty())
	{
		boxuser0.waitrecieve=true;//等待接收
		cout<<"没有要发送给user0的信" <<endl;
	}
	else
	{
		letter temp;
		temp=mybox.letters0.front();//取出
		mybox.letters0.pop_front();//移除
		boxuser0.recieve.cont=temp.cont;
		boxuser0.recieve.size=temp.size;
		boxuser0.recieve.distination=temp.distination;
		mybox.length=mybox.length-1;
		cout<<"the user0 "<<boxuser0.recieve.cont<<endl;
		boxuser0.waitrecieve=false;
	}
	if(mybox.full==true)
		mybox.full=false;//新型不满
	if (mybox.length==false)
	{
		mybox.empty=true;
	}
}

void user1send(boxuser &boxuser1,box &mybox)
{
	if (mybox.full==true)//信箱满了,则将boxuser1的等待标志置一
	{
		boxuser1.waitsend=true;//有消息等待发送
		cout<<"信箱满了!等会儿在发"<<endl;
	}
	else
	{
		letter temp;
		temp.distination=0;//目标地址user0
		temp.cont=boxuser1.send.cont;
		temp.size=boxuser1.send.size;
		mybox.letters0.push_back(temp);// 放在发给user0的队列中
		mybox.length+=1;
		boxuser1.waitrecieve=false;
		if(mybox.empty==1)
			mybox.empty=0;//信箱不空
		if (mybox.length==BOXCAP)
		{
			mybox.full=true;
		}
	}
}

void user1recieve(boxuser &boxuser1,box &mybox)
{
	if (mybox.letters1.empty())
	{
		boxuser1.waitrecieve=true;//等待接收
		cout<<"没有要发送给user1的信" <<endl;
	}
	else
	{
		letter temp;
		temp=mybox.letters1.front();//取出
		mybox.letters1.pop_front();//移除
		boxuser1.recieve.cont=temp.cont;
		boxuser1.recieve.size=temp.size;
		boxuser1.recieve.distination=temp.distination;
		mybox.length=mybox.length-1;
		cout<<"the user1 is"<<boxuser1.recieve.cont<<endl;
		boxuser1.waitrecieve=false;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -