正文

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

阅读(2434) | 评论(0)


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

评论

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