正文

模拟多线程程序(C++实现)2005-10-14 23:52:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/edwardguo/6033.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;         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;            }}             

阅读(13441) | 评论(3)


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

评论

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