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);
  • 相关阅读:
    pdf-2-eps
    使用terminator
    自动删除源文件中的指定行--sed
    apt-get update只是更新源列表?
    LoadRunner学习
    计算一个人从出生到目前一共生活了多少天
    数组的求交集和并集
    获取北京和张北的天气
    重新梳理java入门
    java 基础
  • 原文地址:https://www.cnblogs.com/mikeCao/p/12214971.html
Copyright © 2011-2022 走看看