【検証】nodejs単スレッド理解:一つのnodejsは二つの傍受ポートを開いて、実行する時は二つのスレッドですか?
2714 ワード
一つのnodejsは二つの傍受ポートを開きます.実行する時は二つのスレッドですか?
nodejsに接触したばかりなので、以上の問題に困惑しました.長い間、ずっと分かりませんでした.分からないなら、直接コードで検証してみます.結果はどうなりますか?
17:46に実行します.http://localhost:6211/loop
17:47で実行http://localhost:6212
設定/loopで17:49まで運転を終了します.
次のように結果が出ました.17:47の6212はデータを傍受します./loop 17:49まで待ちます.
whileはループしてから実行します.この二つのポートはシリアルであることを証明しました.
app 1 enter loop:Thu Mar 29 2018 17:48:58 GMT+0800(CST)ap 1 enter loop:Thu Mar 29 2018 17:48:58 GMT+0800(CST)ap 1 enter loop:Thu Mar Mar 29 2018 2018 2018 18 18:18 18:48:58 GMT+ 0800(CST)CST ap 1 entloop CST:CST 1 CST:CST:CST)ap 1 CST ap 1 CST-CST 1 CST 1 entloop 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 loop:Thu Mart 29 2018-17:48:58 GMT+0800(CST)app 1 enter loop:Thu Mar 29 2018 17:48:58 GMT+0800(CST)ap 1 enter loop:Thu Mar 29 2018 17:48:58 GMT+0800(CST)ap 1 enter loop:Thu Mar Mar 29 2018 2018 2018 18 18:18 18:48:58 GMT+ 0800(CST)CST ap 1 entloop CST:CST 1 CST:CST:CST)ap 1 CST ap 1 CST-CST 1 CST 1 entloop 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 loop:Thu Mart 29 2018-17:48:58 GMT+0800(CST)app 1 enter loop:Thu Mar 29 2018:48:58 GMT+0800(CST)ap 1 enter loop:Thu Mar 29 2018:48:58 GMT+0800(CST)
app 2 visit
印刷結果は上記のように、nodejsの一つのプロセスの傍受の二つのポートがシリアルであることを証明しています.
これはちょうどnodejsが単スレッドであることを証明しています.
nodejsに接触したばかりなので、以上の問題に困惑しました.長い間、ずっと分かりませんでした.分からないなら、直接コードで検証してみます.結果はどうなりますか?
var express1 = require('express');
var express2 = require('express');
var app1 = express1();
var app2 = express2();
var port1 = 6211;
var port2 = 6212;
app1.listen(port1);
console.log("app1 server is listening on " + port1);
app2.listen(port2);
console.log('app2 server is listening on ' + port2);
app1.use('/', (req, res, next)=>{
console.log('app1 visit');
res.send('ok1');
next();
});
app2.use('/', (req, res, next)=>{
console.log('app2 visit');
res.send('ok2');
next();
});
app1.use('/loop', (req, res, next)=>{
var date1 = new Date();
console.log(date1);
var date2 = new Date();
date2.setMinutes(49);
date2.setSeconds(0);
console.log(date2);
while (date2 - date1 > 0){
console.log('app1 enter loop :' + date1);
date1 = new Date();
}
next();
});
上のコードのように、2つの端末が別途オープンし、テスト6211と6212のポートがあります.17:46に実行します.http://localhost:6211/loop
17:47で実行http://localhost:6212
設定/loopで17:49まで運転を終了します.
次のように結果が出ました.17:47の6212はデータを傍受します./loop 17:49まで待ちます.
whileはループしてから実行します.この二つのポートはシリアルであることを証明しました.
app 1 enter loop:Thu Mar 29 2018 17:48:58 GMT+0800(CST)ap 1 enter loop:Thu Mar 29 2018 17:48:58 GMT+0800(CST)ap 1 enter loop:Thu Mar Mar 29 2018 2018 2018 18 18:18 18:48:58 GMT+ 0800(CST)CST ap 1 entloop CST:CST 1 CST:CST:CST)ap 1 CST ap 1 CST-CST 1 CST 1 entloop 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 loop:Thu Mart 29 2018-17:48:58 GMT+0800(CST)app 1 enter loop:Thu Mar 29 2018 17:48:58 GMT+0800(CST)ap 1 enter loop:Thu Mar 29 2018 17:48:58 GMT+0800(CST)ap 1 enter loop:Thu Mar Mar 29 2018 2018 2018 18 18:18 18:48:58 GMT+ 0800(CST)CST ap 1 entloop CST:CST 1 CST:CST:CST)ap 1 CST ap 1 CST-CST 1 CST 1 entloop 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 loop:Thu Mart 29 2018-17:48:58 GMT+0800(CST)app 1 enter loop:Thu Mar 29 2018:48:58 GMT+0800(CST)ap 1 enter loop:Thu Mar 29 2018:48:58 GMT+0800(CST)
app 2 visit
印刷結果は上記のように、nodejsの一つのプロセスの傍受の二つのポートがシリアルであることを証明しています.
これはちょうどnodejsが単スレッドであることを証明しています.