1)一个生产者和一个消费者使用一个共享缓冲区进行合作时,应该如何使用信号量机制来协调它们之间的工作流程?请用伪代码表示。
2)如果N个生产者和M个消费者使用P个缓冲区进行合作,应该如何使用信号量机制来协调它们之间的工作流程?请用伪代码表示。
1) semaphore empty=1,full=0 Producer while(1) { produce ; wait(empty); put in buffer; signal(full); } Consumer while(1) { wait(full); take out from buffer; signal(empty); consume } 2)semaphore empty=n,full=0,mutex1=1, mutex2=1; Buffer buf[n]; int in=0,out=0; %使用循环缓冲级数 Producer while(1) { produce; wait(empty); wait(mutex1) put; in=(in+1)%n; signal(mutex1) signal(full); } Consumer while(1) { wait(full); wait(mutex2) take; out = (out+1)%n; signal(mutex2) signal(empty); consume; }