2012-08-23 4 views
5

OK、Node.jsを学習していますが、この待機モデルの周りに私の心を包み込むことができませんでした。私はThe Node Beginner Bookを読んでそれを学んでいます。そこには、ブロッキング操作とノンブロッキング操作に関するセクションがあります。私が理解していないのは、ノンブロッキング操作です。Node.jsのシングルスレッド実行モデルと実際に混同しています

は、ここでは、コードです:幹部と呼ば

var exec = require("child_process").exec; 

function start(response) { 
    console.log("Request handler 'start' was called."); 

    exec("ls -lah", function (error, stdout, stderr) { 
    response.writeHead(200, {"Content-Type": "text/plain"}); 
    response.write(stdout); 
    response.end(); 
    }); 
} 

function upload(response) { 
    console.log("Request handler 'upload' was called."); 
    response.writeHead(200, {"Content-Type": "text/plain"}); 
    response.write("Hello Upload"); 
    response.end(); 
} 

exports.start = start; 
exports.upload = upload; 

スタート機能、および幹部は、LSの-lahを実行します。コールバックは応答を待つでしょうか? execが "find /"を実行すると、私のコンピュータで "find /"コマンドを完了するのに約30秒かかります。これはシングルスレッドなので、ユーザー1のアクセス開始関数であれば、ミリ秒以内にユーザー2も開始関数にアクセスします。それではどうなりますか?ユーザー1が30秒以内に応答を取得することを意味しますが、ユーザー1は「検索/」をまだ実行しているので1分待つ必要がありますか?

申し訳ありませんが、私の質問はあまりにも汚いです。読んでくれてありがとう!

答えて

4

node.jsでは、すべてのI/O操作が非同期で行われます。両方ともfindの操作が並行して実行されます。読んでみてください:Understanding the node.js event loop

+0

私は、そのリンクをありがとうございます。非常に私のために役立つ! –

関連する問題