44 lines
621 B
Plaintext
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;
|
|
}
|