#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=rand()%3+1; for(sum=sumtime;sum<sumtime+temp;sum++) s[sum]='+'; sumtime+=temp; } void multithread::randio(){ int 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; }}

评论