zoukankan      html  css  js  c++  java
  • semaphore实现浏览器的读写原理

          在编程范式中的斯坦福大学的老师说了一个例子:好比世界上就只有一台互联网的服务器,当我们浏览网页的时候,就好比服务器进行了写操作,而浏览器则进行了读操作。

    我如果用简单的伪代码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
    	}
    
    }
    
    }
    
    
    }



  • 相关阅读:
    配置缓存过期时间
    浏览器读取缓存流程
    nginx做代理的优化
    系统优化
    每日总结2.2
    每日总结2.1
    《构建之法》阅读笔记三
    每日总结1.29
    每日总结1.28
    每日总结1.27
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3196849.html
Copyright © 2011-2022 走看看