JavaScriptの生産者 - 消費者モデル

シングルスレッドの方法を使用してノードを達成するので、ので、この使用タイマータイマーをスレッドスレッドを置き換えるために生産者-消費者モデルを達成するために。

1  VAR sigintCount = 0 2  VAR productArray = [];
3  VAR productArrayLen = 0 4  VAR productLockは= ;
5  のvar = 10 PRODUCT_ARRAY_THRESHOLD 6  
7  VaRの睡眠= 関数(){
 8      てclearInterval(producerTimer)。
9      てclearInterval(consumerTimer)。
10      はconsole.log(「生産が完了したとproductArrayLenがある:」+ productArrayLen)。
11      はconsole.log(「利用いただきありがとうございます、バイバイ〜」);
12  }
 13  
14  VAR producerTimer =たsetInterval(関数(){
 15      であれば(!productLock){
 16          であれば(!productLock){
 17              productLock = 18              であれば(productArrayLen < PRODUCT_ARRAY_THRESHOLD){
 19                  productArrayLen ++ ;
 20                  productArray.push( '製品' );
 21                  はconsole.log( '製品' + productArrayLen + 'producer.push' );
 22              }
 23             {
 24                  // 満たす生産目標、休止スレッド
25                  SLEEP();
 26である             }
 27              productLock = falseに;
 28          }
 29      }
 30 }、500 );
 31は 
32  
33である VAR consumerTimer =たsetInterval(関数(){
 34が     IF(!productLock ){
 35          IF(!productLock){
 36              productLock = trueに37              IF(productArrayLen> 0 ){
38                  VaRの積= productArray.shift()。
39                  productArrayLen - 40                  はconsole.log( '製品' + productArrayLen + 'producer.pop' )。
41              }
 42              {
 43                  はconsole.log( '製品' + productArrayLen + 'producer.idle' )。
44              }
 45              productLock = 46          }
 47      }
 48 }、1000)。

おすすめ

転載: www.cnblogs.com/mikeCao/p/12214971.html
おすすめ