next_tick がメイン スレッドで実行されることは、誰もが常に明確に述べています。しかし、タイマーとコールバック/エラーバックはどうですか? それらはメインスレッドでも実行されることが保証されていますか?
2 に答える
0
MRI Ruby を使用していると仮定すると、メイン/リアクター スレッドである「リアル/ネイティブ」スレッドは 1 つしかなく、すべてのコードはこのリアクター スレッドによって実行されます。すべてのタイマーとコールバックは、リアクター スレッドで取得されます。
Eventmachine は、標準操作の一部として複数のスレッドを使用するように設計されていませんが、Eventmachine には、別の「ruby」スレッドでブロックを実行する「EM::defer」メソッドがあります。 jruby や rubinious などのマルチスレッド対応の Ruby の場合、これは「ネイティブ」OS スレッドで実行されます。「ブロッキング」コードを実行する場合は、「Defer」を使用する必要があります。
于 2013-10-08T09:00:29.453 に答える