正文

多线程模拟2008-06-07 13:18:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/vfdff/35972.html

分享到:

#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;       }}

阅读(2689) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册