#include "csim.h"
#include <bios.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void generator(void);
void tellor(void);
void ender(void);
int customers = 0;
int tellors = 1;
int main(void)
{
clrscr();
start_process(generator, 0x0040);
randomize();
start_process(tellor, 0x0040);
start_process(tellor, 0x0040);
start_process(tellor, 0x0040);
if (start_kb_process(ender, 0x0040))
exit_processing(3);
set_time_ratio(1000.0);
sim_start();
return(0);
}
void generator(void)
{
int post_id;
post_id = init_post("Customers");
while (1)
{
customers++;
set_post(post_id, &customers);
gotoxy(1, 1);
printf("customers = %d time %d", customers,
CurrentTime);
wait_for_time((rand() % (int)(4.5_MINUTES_)));
}
}
void tellor(void)
{
int number;
int post_id;
number = tellors++;
post_id = init_post("Customers");
while (1)
{
gotoxy(2, 1 + 2 * number);
printf("0");
wait_post(post_id);
if (customers)
{
gotoxy(2, 1 + 2 * number);
printf("1");
if (customers > 1)
set_post(post_id, &customers);
customers--;
gotoxy(1, 1);
printf("customers = %d time %ld", customers,
CurrentTime);
wait_for_time(4_MINUTES_+ rand() %
(int)(6_MINUTES_));
gotoxy(1, 1);
printf("customers = %d time %ld", customers,
CurrentTime);
}
}
}
void ender(void)
{
wait_for_time(8_HOURS_);
exit_processing(0);
}