javascriptではイベント駆動型なので、setTimeoutはブロックされないようです。これは、私がこれを行う場合:javascriptとnon-blockingのsetTimeoutとrubyのsleep
setTimeout(function(){
console.log('sleeping');
}, 10);
console.log('prints first!!');
それの出力は以下となり'prints first!!'
、その後'sleeping'
。
jsインタプリタはsetTimeoutが終了するまで待たず、その直後にコードを実行します。 10msが経過すると、コールバック関数が実行されます。
最近私は最近ルビーで遊んでいます。私はそれがイベントマシンライブラリで非ブロッキングサポートを持っていることを知っています。しかし、私はちょうどsleep
でjavascriptで書かれているsetTimeoutの例や、イベントマシンのサポートなしでネイティブでrubyの関数を使うことができるのだろうか? closure procやblockなどを使ってこれを行うことは可能ですか?ありがとう。
ええ、それはスレッドが私が使っているものになるように見えません。私は、イベントマシンで非同期処理を行う必要があることを知っていますが、私はちょうど興味がありました。ありがとう –
非同期コールバックをトリガするスレッドの大きな問題は、呼び出し元スレッドでそのコールバックブロックの実行を強制しようとしています。適切なイベントループがある場合を除いて、これは難しいです。 – tadman