加油站练习(与信号量同步)

时间:2018-04-07 10:15:14

标签: process operating-system synchronization semaphore pseudocode

我正在尝试用我的操作系统类的伪代码编写一个程序:我们有一个带 N泵 1M升油箱的加油站。每辆车都要求加油一定量的汽油。燃油箱由油罐车提供,只有在没有汽车加油的情况下才能将其重新装满。

  • 如果有可用的泵,如果有足够的汽油并且油罐车没有重新加油,那么汽车只能加油。

  • 使用伪代码编写解决方案,使用信号量和进程优化对资源的访问。

这就是我所做的:

#define M 15;
#define N 3;
sem pumps=N;
sem fuel_tank=3;
int max_capacity=M;
int request;
bool fill=false;

----
CAR:
----

wait(pumps);        

request=rand()%3+1;

if(request<max_capacity && fill==false)
{
wait(fuel_tank);
refuel();
max_capacity=max_capacity-request;
signal(fuel_tank);
}

signal(pumps);

-----------
TANK TRUCK:
-----------


wait(pumps);

fill=true;
while(fuel_tank!=3)
sleep(1);

refill();
max_capacity=M-max_capacity;
fill=false;

signal(pumps);

由于这是我第一次使用信号量和进程,我不确定上面的代码是否正确并且可以正常运行。

你怎么看?有什么不对吗?

0 个答案:

没有答案
相关问题