問題タブ [message-passing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
12 に答える
52917 参照

java - Java:スレッド内の `while(true){...}`ループは悪いですか?代替手段は何ですか?

while (true) { ... }スレッドのループは悪いですか?代替手段は何ですか?

アップデート; 私がやろうとしていること...

私は最大10,000のスレッドを持っており、それぞれがプライベートキューからのメッセージを消費しています。メッセージを1つずつ生成し、それらを正しいコンシューマーのキューに入れるスレッドが1つあります。各コンシューマスレッドは無期限にループし、キューに表示されるメッセージをチェックして処理します。

Consumer.javaの内部:

プロデューサーは、メッセージをコンシューマーメッセージキュー内に急速に配置しています(1秒あたり数百万メッセージ)。消費者はこれらのメッセージをできるだけ速く処理する必要があります!

注:はwhile (true) { ... }、最後のメッセージとしてプロデューサーによって送信されたKILLメッセージによって終了します。しかし、私の質問は、このメッセージパッシングを行う適切な方法についてです...

このデザインについては、新しい質問をご覧ください。

0 投票する
5 に答える
7280 参照

java - Java:高性能メッセージパッシング(単一のプロデューサー/単一のコンシューマー)

私は最初にここでこの質問をしましたが、私の質問はしばらくの間真のループに関するものではないことに気づきました。私が知りたいのは、Javaで高性能の非同期メッセージパッシングを行う適切な方法は何ですか?

私がやろうとしていること...

私には約10,000人のコンシューマーがいて、それぞれがプライベートキューからのメッセージを消費しています。メッセージを1つずつ生成し、それらを正しいコンシューマーのキューに入れるスレッドが1つあります。各コンシューマーは無期限にループし、キューに表示されるメッセージをチェックして処理します。

プロデューサーは1人で、各コンシューマーはプライベートキューでのみ機能するため、「単一のプロデューサー/単一のコンシューマー」という用語だと思います(複数のコンシューマーが同じキューから読み取ることはありません)。

Consumer.javaの内部:

プロデューサーは、メッセージをコンシューマーメッセージキュー内に急速に配置しています(1秒あたり数百万メッセージ)。消費者はこれらのメッセージをできるだけ速く処理する必要があります!

注:はwhile (true) { ... }、最後のメッセージとしてプロデューサーによって送信されたKILLメッセージによって終了します。

ただし、私の質問は、このメッセージパッシングを設計する適切な方法についてです。messageQueueにはどのような種類のキューを使用する必要がありますか?同期または非同期のどちらにする必要がありますか?メッセージはどのように設計する必要がありますか?while-trueループを使用する必要がありますか?コンシューマーはスレッド、または他の何かである必要がありますか?10,000スレッドはクロールまで遅くなりますか?スレッドに代わるものは何ですか?

では、Javaで高性能のメッセージパッシングを行うための適切な方法は何でしょうか。

0 投票する
2 に答える
1962 参照

erlang - Erlang は同じノード上のプロセス間でどのようにメッセージを渡しますか?

ノード間で、メッセージは TCP/IP を介して渡されます (する必要があります)。ただし、同じノードで実行されているプロセス間でどのようなメカニズムで渡されるのでしょうか? この場合も TCP/IP を使用しますか? Unix ドメインソケット? 「ノード内」と「ノード間」のメッセージ パッシングのパフォーマンスの違いは何ですか?

0 投票する
4 に答える
3917 参照

erlang - Erlang は常に同じノード上のプロセス間でメッセージをコピーしますか?

アクター メッセージ パッシング セマンティクスの忠実な実装は、不変型であっても、論理的な観点からメッセージ コンテンツがディープ コピーされることを意味します。メッセージ コンテンツのディープ コピーは、アクター モデルの実装のボトルネックのままであるため、一部の実装では、パフォーマンスのためにゼロコピー メッセージ パッシングをサポートしています (ただし、プログラマの観点からはディープ コピーです)。

Erlangでは、ゼロコピー メッセージ パッシングはまったく実装されていますか? ノード間では明らかにそのままでは実装できませんが、同じノード上のプロセス間ではどうでしょうか? この質問は関連しています。

0 投票する
2 に答える
1675 参照

google-chrome-extension - Chrome 拡張機能の背景ページは、複数のコンテンツ スクリプトとどのように通信する必要がありますか?

バックグラウンド ページから複数のコンテンツ スクリプトとの通信に問題があります。私の背景ページには次のようなコードがあります:

そして、私は次のようなコンテンツスクリプトを持っています:

私の理解では、バックグラウンド ページのコールバックは、各コンテンツ スクリプトから 1 回ずつ、2 回呼び出す必要があります。if節にブレークポイントがある場合にのみ、2 回しか呼び出されないように見えます。ここで何か間違ったことをしていますか?

ありがとう、

-グレッグ

0 投票する
5 に答える
10878 参照

language-agnostic - メッセージパッシングとメソッド呼び出しの違いは何ですか?

メッセージの受け渡しとメソッドの呼び出しに違いはありますか、それとも同等と見なすことができますか? これはおそらく言語に固有のものです。多くの言語はメッセージ パッシングをサポートしていません (私が考えることができるすべての言語はメソッドをサポートしています)。また、言語によってメソッド呼び出しに大きな違いがあります (C、Java、Lisp、お好みの言語)。これは言語に依存しないと思います。呼び出されたメソッドではできなくて、渡されたメソッドでできること、およびその逆 (お気に入りの言語で) は?

0 投票する
2 に答える
18052 参照

multithreading - アクターはスレッドと比較してどのように機能しますか?

スレッドと比較してアクターがどのように機能するかについての良い短い説明はありますか?

スレッドをアクターと見なして他のスレッドにメッセージを送信することはできませんか?多少の違いはありますが、はっきりしていません。スレッドを別の方法で使用して、任意の言語でアクターを使用できますか?

0 投票する
3 に答える
101788 参照

android - ブロードキャスト メッセージの送受信方法

タブ内にある 2 つのアクティビティ間でデータをやり取りしようとしています。を使おうとしていますsendBroadcast()。ブレークポイントを設定すると、 に到達しませんonReceive()

マニフェスト:

活動送信者:

アクティビティ レシーバー:

0 投票する
1 に答える
181 参照

algorithm - 応答時間制限のある非同期要求応答アルゴリズム

ebXML メッセージ パッシング アプリケーション用のメッセージ ハンドラを作成しています。メッセージは Request-Response パターンに従います。プロセスは簡単です。送信者がメッセージを送信し、受信者がメッセージを受信して​​応答を返します。ここまでは順調ですね。

メッセージを受信すると、受信者はメッセージに対する応答時間 (TTR) を設定します。これは、数秒から数時間/日までの範囲です。

私の質問は次のとおりです。送信者は TTR にどのように対処する必要がありますか? TTR が非常に長くなる可能性があるため (数日)、これを非同期プロセスにする必要があります。どうにかしてタイマーをカウントダウンできますが、システムリソースを長時間拘束することはできません。大量のメッセージが存在する可能性があります。

私の最初のアイデアは、TTR の有効期限と共に、メッセージ ID が追加される「待機中」のコレクションを持つことです。その後、定期的にコレクションをポーリングします。タイマーが切れると、メッセージ Id は「期限切れ」コレクションに移動され、メッセージ トランザクションは終了します。

Sender が応答を受信すると、一致する送信済みメッセージの "Waiting" コレクションをチェックし、応答が時間内に受信されたことを確認できます。メッセージは、次の処理段階のためにコレクションから削除されます。

これは堅牢なソリューションのように聞こえますか。これは解決済みの問題だと確信していますが、このタイプのアルゴリズムに関する貴重な情報はほとんどありません。C#で実装する予定ですが、現段階では実装言語は関係ないと思います。

ご意見ありがとうございます

0 投票する
1 に答える
984 参照

memory-management - MPI プログラムでのメモリ割り当て

MPI プログラムを実行するために、スレーブ ノードにメモリがどのように割り当てられますか? スレーブ ノードはどのようにして予約するメモリの量を認識しますか? スレーブノードがアクセスしたいデータを見つけられない場合はどうなりますか?

これは宿題の問題ではありませんが、私が試した質問が頭に浮かび、グーグルで見つけることができませんでした