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

📄 process.cpp

📁 操作系统多线程运行的c++示例,环镜是visual c
💻 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 + -