当前位置: 技术问答>linux和unix
老师留的一道关于使用fork()创建child来并行处理的作业题,请各位大侠给点灵感,跪谢!!!!
来源: 互联网 发布时间:2015-10-20
本文导语: 老师让我模拟一个加油站,有三种油放在三个油罐里面,有16个泵可以抽任意一种油,加油车不定时的来给三个油罐加油,抽取速度为1L/10秒,老师让我们利用fork()来实现处理并行的任务. 这个问题好抽象阿,,我是一筹莫展,,...
老师让我模拟一个加油站,有三种油放在三个油罐里面,有16个泵可以抽任意一种油,加油车不定时的来给三个油罐加油,抽取速度为1L/10秒,老师让我们利用fork()来实现处理并行的任务.
这个问题好抽象阿,,我是一筹莫展,,郁闷,,还是自己实力太差.......恳请各位高手指点!!!多谢了!
怎么用C编这种程序阿???
这个问题好抽象阿,,我是一筹莫展,,郁闷,,还是自己实力太差.......恳请各位高手指点!!!多谢了!
怎么用C编这种程序阿???
|
//模拟汽车加油
#include
#include
#include
#include
#include
#include
#define SPEED 2 //定义加油的速度,为2秒一个油
#define CAR_COME_RANDTIME 10 //定义车随机来的最大时间
int alarmtime = 1;
int share = 4; //空闲加油器计数器
/* 此函数用来模拟汽车加油
*/
int addgas(int req_gas)
{
while(req_gas-- > 0)
{
printf("tcar %d adding gas 1 ,remain %dn", getpid(),req_gas);
sleep(10/SPEED); //用睡眠表示正在加油
}
return 0;
}
/* 此函数捕捉信号并且根据信号进行有关的控制
*/
void catsig(int signo)
{
pid_t pid;
int req = 0;
alarm(alarmtime); //设置发生时间信号计时器
alarmtime = 1+(int)(((float)CAR_COME_RANDTIME)*rand()/(RAND_MAX+1.0));
if(share > 0) //有空闲的加油器则分配子进程进行加油
{ share--; //让空闲加油器计数器减一
if((pid = fork())
#include
#include
#include
#include
#include
#include
#define SPEED 2 //定义加油的速度,为2秒一个油
#define CAR_COME_RANDTIME 10 //定义车随机来的最大时间
int alarmtime = 1;
int share = 4; //空闲加油器计数器
/* 此函数用来模拟汽车加油
*/
int addgas(int req_gas)
{
while(req_gas-- > 0)
{
printf("tcar %d adding gas 1 ,remain %dn", getpid(),req_gas);
sleep(10/SPEED); //用睡眠表示正在加油
}
return 0;
}
/* 此函数捕捉信号并且根据信号进行有关的控制
*/
void catsig(int signo)
{
pid_t pid;
int req = 0;
alarm(alarmtime); //设置发生时间信号计时器
alarmtime = 1+(int)(((float)CAR_COME_RANDTIME)*rand()/(RAND_MAX+1.0));
if(share > 0) //有空闲的加油器则分配子进程进行加油
{ share--; //让空闲加油器计数器减一
if((pid = fork())
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!