node.jsのlibuvスレッドプールの詳細については、次のnode.jsプログラム(Ubuntu 14.04のノードバージョン6.2.0)を書きました。プログラムでは、サイズ10KBの2つのテキストファイルを読んでいます。ファイルが正常に読み込まれた後、私はいくつかのコンピューティング集中的な仕事をしています(コールバックで)。node.jsのlibuvスレッドプールについての私の理解は正しいですか?
var log4js = require('log4js');// For logging output with timestamp
var logger = log4js.getLogger();
var fs=require('fs');
fs.readFile('testFile0.txt',function(err,data){//read testFile0.txt
logger.debug('data read of testFile0.txt');
for(var i=0; i<10000; i++)//Computing intensive task. Looping for 10^10 times
{
for(var j=0; j<10000; j++)
{
for(var k=0; k<100; k++)
{
}
}
}
});
fs.readFile('testFile1.txt',function(err,data){//read testFile1.txt
logger.debug('data read of testFile1.txt');
for(var i=0; i<10000; i++)//Computing intensive task. Looping for 10^10 times
{
for(var j=0; j<10000; j++)
{
for(var k=0; k<100; k++)
{
}
}
}
});
libuvのスレッドプールの私の理解あたりに、2つのファイルがすぐに読まれるべきであるとし、書類の印刷との間の時間差「testFile0.txtの読み込んだデータ」、「testFile1.txtのデータの読み取り」でなければなりません既定のスレッドプールサイズが4であり、2つの非同期要求(ファイル読み取り操作)しか存在しないため、非常に少ない(ミリ秒または最大でも)。しかし、 "testFile0.txtのデータ読み取り"と "testFile0.txtのデータ読み取り"という文の印刷の時間差はかなり大きい(10秒)。誰かがなぜ時間差がそれほど大きいのか説明できますか?コールバックで実行されるコンピューティング集中型タスクは大きな時間差に貢献しますか?