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