os/baci/main.cm

44 lines
621 B
Plaintext

binarysem sem_produce;
binarysem sem_consume;
int g_value;
void produce(char id)
{
int r;
wait(sem_produce);
r = random(100);
cout << "Producer " << id << " made: " << r << endl;
g_value = r;
signal(sem_consume);
}
void consume(char id)
{
wait(sem_consume);
cout << "Consumer " << id << " ate: " << g_value << endl;
signal(sem_produce);
}
main()
{
initialsem(sem_produce, 1);
initialsem(sem_consume, 1);
cobegin {
produce('A');
produce('B');
consume('A');
consume('B');
consume('C');
}
cout << "done." << endl;
}