正文

模拟多线程程序(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;     
      }
}
    
        

阅读(5204) | 评论(3)


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

评论

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