📄 process.cpp
字号:
/*
假设系统只能有一个进程出去执行状态,
如果系统有执行的进程.其他请求的进程就处于等待状态!
*/
#include"iostream.h"
class Thread
{
public:
Thread()
{
cout<<"创建进程......"<<endl;
status=1;
}
~Thread()
{
cout<<"进程结束....."<<endl;
}
int Getstatus()
{
return status;
}
void SetStatus(int s,int &systemstatus)
{
if(systemstatus==1 && s==1)
{
cout<<"还有进程正在执行,此进程被阻塞,处于等待状态"<<endl;
status=3;
return;
}if(s==3)
{
status=3;
}
systemstatus=1;
status=2;
cout<<"进程执行......"<<endl;
}
void Stop(int systemstatus)
{
cout<<"执行完毕"<<endl;
systemstatus=0;
status=4;
}
void Alarm(Thread &thread,int systemstatus)
{
cout<<"此进程正在被唤醒!"<<endl;
thread.SetStatus (1,systemstatus);
}
void Dispalystatus(Thread &thread)
{
switch(thread.status)
{
case 1:cout<<"处于就绪状态"<<endl;break;
case 2:cout<<"处于执行状态"<<endl;break;
case 3:cout<<"处于等待状态"<<endl;break;
case 4:cout<<"执行结束"<<endl;break;
}
}
private:
int status;//定义状态.1.就绪;2.执行;3.等待;4.执行完毕
};
void main()
{
int systemstatus=0,status=1;
int Which=1;//对那个进程操作,兼做结束符
int What=1;//对进程做什么样的操作
cout<<"建立第一个进程!"<<" ";
Thread a;
cout<<"建立第二个进程!"<<" ";
Thread b;
cout<<"建立第三个进程!"<<" ";
Thread c;
cout<<"第一个进程 ";
a.Dispalystatus(a);
cout<<"第二个进程 ";
b.Dispalystatus(b);
cout<<"第三个进程 ";
c.Dispalystatus(c);
while(Which)
{
cout<<"请输入你要对那个进程操作:\n对A操作输入(1):对B操作输入(2):对C操作输入(3):【如果输入0表示结束程序】"<<endl;
cin>>Which;
cout<<"请输入你要执行的操作:(2)执行进程:(3)阻塞进程:(4)唤醒进程:(5)执行结束:(6)撤销进程"<<endl;
cin>>What;
if(Which>=0 && Which<=3 && What>=2 && What<6)//判断输入是否正确
{
if(Which==1)
{
switch(What)
{
case 2:a.SetStatus(1,systemstatus);break;
case 3:a.SetStatus(3,systemstatus);break;
case 4:a.Alarm(a,systemstatus);break;
case 5:a.Stop(systemstatus);break;
case 6:a.~Thread();break;
}
}if(Which==2)
{
switch(What)
{
case 2:b.SetStatus(1,systemstatus);break;
case 3:b.SetStatus(3,systemstatus);break;
case 4:b.Alarm(a,systemstatus);break;
case 5:b.Stop(systemstatus);break;
case 6:b.~Thread();break;
}
}if(Which==3)
{
switch(What)
{
case 2:c.SetStatus(1,systemstatus);break;
case 3:c.SetStatus(3,systemstatus);break;
case 4:c.Alarm(a,systemstatus);break;
case 5:c.Stop(systemstatus);break;
case 6:c.~Thread();break;
}
}
cout<<"第一个进程 ";
a.Dispalystatus(a);
cout<<"第二个进程 ";
b.Dispalystatus(b);
cout<<"第三个进程 ";
c.Dispalystatus(c);
}
else
cout<<"你的输入有误,请重新输入"<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -