#include<iostream.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>
class multithread //多线程类
{
private:
char s[1000]; //某线程工作状态字符型记录数组
int sum; //某个对象存储状态的字符串型数组的个数
public:
multithread(){xpiot=0;for(int i=0;i<1000;i++)s[i]=' ';};
~multithread(){};
void randcpu(); //产生某个线程某一次所需的CPU时间的随机函数
void randio(); //产生某个线程某一次所需的外围io设备时间的随机函数
void store(); //存储线程记录函数
void print(); //输出运行结果
static int sumtime; //系统总时间
int xpiot; //当前线程与其后io运行时间之和
};
int multithread::sumtime=0;
void multithread::randcpu()
{
int temp;
temp=rand()%3+1;
for(sum=sumtime;sum<sumtime+temp;sum++)
s[sum]='+';
sumtime+=temp;
}
void multithread::randio()
{
int temp;
temp=rand()%3+3;
for(sum=sumtime;sum<sumtime+temp;sum++)
s[sum]='-';
xpiot=sumtime+temp;
}
void multithread::store()
{
for(sum=xpiot;sum<sumtime-xpiot;sum++)
s[sum]=' ';
}
void multithread::print()
{
int i;
for(i=0;i<xpiot;i++)
cout<<s[i];
}
void main()
{
int a=0,b=0;
multithread mth[4];
time_t t;
srand((unsigned) time(&t));
while(a!=32)
{
if(mth[b].xpiot<=mth[b].sumtime)
{
mth[b].store();
mth[b].randcpu();
mth[b].randio();
a++;
b=(b+1)%4;
}
else
{
mth[b].sumtime++;
}
}
for(b=0;b<4;b++)
{
mth[b].print();
cout<<endl;
}
}
评论