在编程范式中的斯坦福大学的老师说了一个例子:好比世界上就只有一台互联网的服务器,当我们浏览网页的时候,就好比服务器进行了写操作,而浏览器则进行了读操作。
我如果用简单的伪代码c++写出来是这个样子的:
int main(){
ITP(false);
ThreadNew("write",write,0);
ThreadNew("Reader",reader,0); RunAllThread(); void writer(){
for(int i=0;i<40; i++){
char = PrepareRandom();
buffer[i/8] = c; }
void reader(){
for(int i=0; i<40; i++){
char c = buffer[i%8]; Processchar(c); } } } }
用信号量的解决办法代码如下:
int main(){ char buffer[8];
Semaphore emptyBuffer = (9);
Semaphore fullBuffer = (0); ITP(false);
ThreadNew("write",write,0);
ThreadNew("Reader",reader,0); RunAllThread(); void writer(){
for(int i=0;i<40; i++){ char c= PrepareRandom();
semaphoreWait(emptyBuffer); //Wait on the specified semaphore
buffer[i/8] = c;
semaphoreSignal(fullbuffer); }
void reader(){
for(int i=0; i<40; i++){
semaphoreWait(fullbuffer);
char c = buffer[i%8]; Processchar(c);
semaphoreSignal(emptyBuffer);//Increments the semaphore count
} } } }