2016-11-04 7 views
0

この質問に対するグーグルの結果は、ノードが1つのスレッドで非同期操作を行う方法を説明するガイドです。それは私が探しているものではありません。NodeJSがCPU作業用のIOスレッドを使用する

私がブロブを処理する必要があるとしましょう。ブロブを処理するには5分のCPU時間がかかります。

このワーカーが応答しなくなるため、メインスレッドをブロックしたくありません。

fs.readFileのように、処理作業を行うロジックのインターフェイスを公開してIOスレッドの1つに渡したい場合は、処理が完了した時点をお知らせください。

どうすればいいですか?

+0

に非常に簡単な例を作りました。これにより、他のスクリプトが別のスレッドで実行されるため、メインアプリが応答するようになります。 – Molda

+0

私はあなたの意見を見ていますが、なぜfsライブラリを使用するとより簡単ですか?このライブラリも別のプロセスを生成しますか?私はそうは思わない。 – johni

+0

私はエキスパートではありませんが、HDDからRAMへのデータの処理がメインスレッドとは独立して行われるため、readFileなどのIO操作はメインスレッドをブロックしないと考えています。プロセス。これはchild_processとはまったく異なります。これは私が知っている限りです:) – Molda

答えて

0

Javascript/Nodejsはシングルスレッドです。 あなたのユースケースは、メッセージキューシステムに適合しているようです。たとえば、Rabbitmq

基本的には、ワーカーサービス(コンシューマ)とタスクキューワーになります。 タスクキューワーは、メッセージバスにメッセージを送信します。メッセージバスはこのメッセージを別のサービスに転送します。

私は私が処理を行うスクリプトを記述してchild_processを使用して、メインスクリプトから実行することをお勧めしますgithubのhttps://github.com/holoduke/nodejs_rabbitmq_simple_example

関連する問題