zoukankan      html  css  js  c++  java
  • JavaScript 生产者消费者模型

    因为node使用单线程的方式实现,所以,在此使用定时器timer取代线程thread来实现生产者消费者模型。

     1 var sigintCount = 0;
     2 var productArray = [];
     3 var productArrayLen = 0;
     4 var productLock = false;
     5 var PRODUCT_ARRAY_THRESHOLD = 10;
     6 
     7 var sleep = function () {
     8     clearInterval(producerTimer);
     9     clearInterval(consumerTimer);
    10     console.log('Production has been completed and the productArrayLen is:' + productArrayLen);
    11     console.log('Thank you for use, Bye bye ~');
    12 }
    13 
    14 var producerTimer = setInterval(function () {
    15     if(!productLock) {
    16         if(!productLock) {
    17             productLock = true;
    18             if(productArrayLen < PRODUCT_ARRAY_THRESHOLD) {
    19                 productArrayLen ++;
    20                 productArray.push('product');
    21                 console.log('product:' + productArrayLen + '    producer.push');
    22             }
    23             else{
    24                 // 达到生产目标,休眠线程
    25                 sleep();
    26             }
    27             productLock = false;
    28         }
    29     }
    30 }, 500);
    31 
    32 
    33 var consumerTimer = setInterval(function() {
    34     if(!productLock) {
    35         if(!productLock) {
    36             productLock = true;
    37             if(productArrayLen > 0) {
    38                 var product = productArray.shift();
    39                 productArrayLen --;
    40                 console.log('product:' + productArrayLen + '    producer.pop');
    41             }
    42             else{
    43                 console.log('product:' + productArrayLen + '    producer.idle');
    44             }
    45             productLock = false;
    46         }
    47     }
    48 }, 1000);
  • 相关阅读:
    2017暑期集训Day 1
    17-06-28模拟赛
    17-06-26模拟赛
    平衡树学习笔记
    指针学习笔记
    17-06-14模拟赛
    17-06-11模拟赛
    17-06-02模拟赛
    17-05-31模拟赛
    培训补坑(day1:最短路&two-sat)
  • 原文地址:https://www.cnblogs.com/mikeCao/p/12214971.html
Copyright © 2011-2022 走看看