2016-10-13 14 views
13

nodejsマルチスレッディング..nodejsでマルチスレッドを実現することは可能でしょうか?

気象ノードjではマルチヘッドが使用できますか?そうであれば。 nodejにマルチヘッドを使用するメリットとデメリットは何ですか?nodejにマルチスレッドを実現できるモジュールはありますか?私はnodejsに初心者です、私はノードが シングルスレッドであると言っている多くのブログから読んでいます。 私はJavaのマルチスレッドを知っていますが、私は天気を知る必要がありますそれはノードで可能かどうか です。

答えて

2

いいえ、node.jsにスレッドを使用することはできません。コード実行の非同期モデルを使用します。非同期モデルの背後には、ノード自体がスレッドを使用します。しかし、私が知る限り、追加ライブラリなしではアプリでアクセスすることはできません。

非同期モデルでは、実際にはスレッドは必要ありません。ここに簡単な例があります。通常、マルチスレッド環境では、メインスレッドのコードの実行をブロックしないように、各スレッドでネットワーク要求を実行します。非同期モデルでは、これらの要求はメインスレッドをブロックせず、他のスレッドでも実行されますが、これは開発プロセスを単純化するために隠されているだけです。

また、this commentをバズザでチェックしてください。

+0

マルチスレッドのためにnpmにリストされているモジュールのいくつかは、これについて何を言いますか? –

+0

@UmakantMane、詳細については、[リンクされた回答](http://stackoverflow.com/questions/18613023/how -to-create-threads-in-nodejs)を使用します。これらのスレッドはネイティブで公開されていません。特殊ライブラリを使用してアクセスする必要があります。私のポイントはあなたがこれを必要としないかもしれないということでした。 –

+0

ありがとう、あなたはnodejs –

27

はい、いいえ。最初からやりましょう。 NodeJsがシングルスレッド化されているのはなぜですか?Why is Node.js single threaded?

Node.js自体はマルチスレッド化されていますが、I/Oなどの操作はスレッドプールから実行されます。目的に応じて、単一のスレッドで実行できます。これはNode.js自体の制限ではなく、V8 JavaScriptエンジンとJavaScript実装の一般的な制限です。

Node.jsには、複数のNode.jsプロセスをクラスタ化するためのネイティブメカニズムが含まれています。各プロセスは別のコアで実行されます。しかし、そのクラスタリングメカニズムには、ネイティブルーティングロジックやワーカー間の共有状態は含まれていません。

一般的には、各node.jsプロセスが複数のスレッドを必要とする場合は、複数のプロセスを持つ必要があるということです。 たとえば、ここではhttp://nodejs.org/api/child_process.htmlで説明する子プロセスを使用できます。あなたの情報のために、この記事をチェックしてください。非常に有益でよく書かれており、child_processesで作業したい場合にはおそらく助けになります - https://blog.scottfrees.com/automating-a-c-program-from-a-node-js-web-app

上記のすべてにもかかわらず、 C++およびネイティブなnodejs C++開発によるマルチスレッドの種類。

もちろんすべて、おそらく彼らはあなたを助ける、これらの答えをチェックアウト

How to create threads in nodejs

Node.js C++ addon: Multiple callbacks from different thread

Node.js C++ Addon: Threading

https://bravenewmethod.com/2011/03/30/callbacks-from-threaded-node-js-c-extension/

の最初にあなたが見つけると活用することができます"マルチ"スレッドを提供している多くのノードプラグイングラム機能:他にhttps://www.npmjs.com/search?q=thread

、あなたはJXCoreJXCorehttps://github.com/jxcore/jxcore を確認することができますNode.jsののフォークで、Node.jsのアプリケーションが同じプロセス内に収容された複数のスレッド上で実行することができます。だからおそらくJXCoreがあなたのための解決策です。

「Node.jsでマルチスレッドを使用するメリットとデメリットは何ですか?」

あなたのやりたいことによって異なります。スレッドのプラグインやプロセスまたは何でも、V8やNode.jsののコアから「ハック」または誤用の何もしないでください - あなたは活用し、正しくNode.jsのソースを使用して、あなたの「マルチ」も何ら不都合はありません!すべての答えのように

、正解は「仕事のための適切なツールを使用する」です。 もちろん、ノードは設計上はシングルスレッドなので、マルチスレッド化のためのより良いアプローチができます。

多くの人が使っているテクニックは、C++、Java、Pythonなどのマルチスレッドアプリケーションを作成し、自動化とNode.js child_process(サードパーティのアプリケーションが自動化と非同期で実行される) C++アプリケーションなどのパフォーマンスが向上し、Node.jsアプリケーションから入力を受け取り、出力を取得できます)。

短所マルチスレッドのNode.js

はこれを確認してください:https://softwareengineering.stackexchange.com/questions/315454/what-are-the-drawbacks-of-making-a-multi-threaded-javascript-runtime-implementat

をあなたはそれを修正することにより、Node.jsの中に純粋なマルチスレッド環境を作成したい場合は、私が思うことを覚えておいてくださいそれはさらに、あなたは常に、おそらくこの影響を及ぼしますそれぞれの新しいV8またはノードのリリースで最新の状態に、する必要があり、原因複雑に危険で、困難であろう。

これが役に立ちます。

関連する問題