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; }