Решение задачи взаимного исключения
Имеется остановка маршрутного такси. С определенными интервалами времени на остановку приходят пассажиры и подъезжают такси. Такси уезжает, когда в него сядет 10 пассажиров. Если пришедший пассажир не обнаруживает стоящего такси, он встает в очередь на посадку. Если такси подъехало на пустую остановку, оно ждет пасажиров. Если такси подъехало, а на остановке уже стоит такси, оно встает в очередь такси.
Не получается сделать модель точно по коду
`#include <pilgrim.h>
float Pas=1.0; /* интервал прихода пассажиров */
float Tax=10.0; /* интервал прихода такси */
float Mod_time=360.0;
forward
{
modbeg(“Маршр. такси”, 5, Mod_time, (long)time(NULL),
none,2, none, 5, 2);
ag(“Пассажиры”, 1, none, expo, Pas, zero, zero, 2);
ag(“Такси”, 6, none, norm, Tax, Tax/3, zero, 2);
network(dummy, dummy)
{
top(2): queue(“Пассажиры”, none, 3);
clcode
if (addr[2]->na == 1)
hold(3); /* начальное размыкание ключа */
place;
top(3): key(“Есть такси?”, 4);
place;
top(4): delet(“Посадка в такси”, 0, 10, 5);
rels(3);
hold(8);
place;
top(5): term(“Такси уехало”);
hold(3);
rels(8);
place;
top(7): queue(“Такси”, none, 4);
place;
top(8): key(“Остановка свободна?”, 4);
place;
fault(123);
}
modend(“pilgrim.rep”, 1, 12, page);
return 0;
}
