2

完全にノンブロッキングな node.js アプリを開発しています。

ただし、CPU を集中的に使用する関数がいくつかあります。

  • CryptoJS.AES 復号化/暗号化
  • uuid の作成
  • データからコンテンツを作成する

ここで、スレッドを使用して CPU 集中型タスクからイベント ループをオフロードするモジュールを見つけました: node-webworker-threads

私は今作成する必要があります:

  1. アプリの起動時: 関数ごとに 1 つのスレッドであるため、AES.decrypt はスレッドであり、AES.encrypt なども同様です。
  2. アプリの起動時: 関数ごとのスレッド プール? (スレッド数? CPU コアごとに 1 つ?)
  3. 実行時: 各関数の入力時に新しいスレッドを作成し、完了後に破棄しますか?

スレッドは、私がまだ完全に理解していないものです..

4

1 に答える 1

5

それは本当にあなたのアプリケーションに依存します。固定サイズのスレッド プールを使用する場合、リクエスト数 > 使用可能なスレッド数の場合、キューを実装する必要があり、輻輳が発生する可能性があります。

最良の方法 (もちろん私の意見では) は、AES、UUID、およびデータを処理する、要求ごとに新しいスレッドを生成することです。つまり、すべての計算を実行するリクエストごとに 1 つのスレッドです。すべてが完了したら、スレッドから結果を返し、スレッドを強制終了します。

もちろん、これにより、負荷の高いサーバーで多くのスレッドが生成される可能性があります。しかし、イベントループを明確に保ちます。

編集:このスレッドはあなたにとって興味深いかもしれません。

于 2013-10-13T22:28:40.060 に答える