問題タブ [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.
concurrency - seda とアクター モデルは本質的に同等ですか?
SEDA は基本的に、キューを介して相互に通信する一連の独立した「サービス」であり、メッセージ パッシングとしてさらに抽象化できます。
アクター モデルは、メッセージ パッシングを通じて相互に通信する一連の独立した関数です。
それらは本質的に同等ではありませんか?いくつかの重要な違いがありませんか?
firefox - Firefox拡張機能でメッセージパッシングを実装するにはどうすればよいですか?
overlay.xul
を上書きするファイルがありますbrowser.xul
。Chrome拡張機能で実装されているのと同様の方法でメッセージパッシングを実装したいと思います。
chrome.manifest-
content_script.js
私の場合はどれを登録するのoverlay.js
ですか?
Overlay.xul-
今overlay.js
私が使用している私の中で-
そして、それはbackground.js
-
- メッセージパッシングの正しい構文は何ですか?
- コンテンツスクリプトとブラウザスクリプト間の接続を構成するにはどうすればよいですか?
objective-c - スーパークラスとして型指定された変数でサブクラスメソッドを呼び出す
次の名前のクラスを作成しましたFoo
:
およびFoo
名前付きのサブクラスBar
:
Bar
次のように、Foo
オブジェクトとして配列に格納しようとしています。
私は実際に複数のサブクラスを持っているのでこれを行っていますFoo
(それらすべてをリストしたくありません)。配列からオブジェクトを取得し、そのオブジェクトにメッセージを送信してmyString
変数を取得すると、アプリケーションは何もしません。 例:
「メッセージ」がどのように機能するか誤解していますか?私は、オブジェクトにメッセージを送信でき、そこにあるかどうかに関係なく、オブジェクトを呼び出すことができると想定していました。これを他の方法で行う必要がありますか?配列はすべての異なるタイプのFoo
子クラスを保持し、それらをそこに格納するために必要です。
caching - アクター同時実行モデルとキャッシング
ソフトウェア内でキャッシュを多用しています。「put/get」データストアの概念は、「Shared State Concurrency Model」に対応します。これには、メッセージ パッシングの同時実行性 (アクターなど) と比較すると、多くの欠点があります。
メッセージ パッシング モデルとキャッシングをどのように調和させることができるでしょうか? それとも、共有状態の同時実行性に永遠に行き詰まるでしょうか?
multithreading - スレッド-メッセージパッシング
私は、メッセージパッシングで最高のパフォーマンスとスケーリングを実現するためのリソースを見つけようとしていました。参照ではなく値でメッセージを渡すと、NUMAスタイルのセットアップで適切に機能し、特定のメモリアドレスの競合が減少するため、スケーラビリティが向上する可能性があると聞きました。
値ベースのメッセージパッシングは「小さい」メッセージでのみ機能すると思います。「小さい」とは何と定義されますか?どの時点で参照が良くなるでしょうか?この方法でストリーム処理を行うでしょうか?
この種の質問に役立つヒントやリソースを探しています。
ありがとう :-)
PS私はC#で作業していますが、この種の設計の質問ではそれほど重要ではないと思います。
c# - 非常に大きなデータストリームを使用したC#のerlangのようなメッセージパッシング
これはメッセージパッシングに関する質問です。これは特に、C#で記述された社内アプリケーションに関連しています。しかし、erlangに似た自家製の「メッセージパッシング」システムがあります。
さて、私たちは、erlangの人々やドキュメントから学び、メッセージパッシングのいくつかの課題に対するエレガントな解決策を見つけることができるようになることを願っています。しかし残念ながら、オンラインやフォーラムでerlangのドキュメントを読んだ後、これらのトピックは取り上げられていないようです。
したがって、問題は次のとおりです。erlangでは、プロセスにメッセージを送信するためのキューがいっぱいになるのはいつですか?そして、erlangはキューがいっぱいの状況を処理しますか?それとも、erlangでメッセージを渡すためのキューは無限ですか?それはシステムメモリによってのみ制限されますか?
私たちのシステムでは、ディスクから数十億の情報のタプルが読み取られる可能性のある金融データのストリームを処理する必要があります。金融情報の各タプルは、金融の世界では「ダニ」と呼ばれます。
そのため、システム内の各「プロセス」のキューサイズに制限を設定する必要がありました。各キューで最大1000アイテムを任意に選択しました。これで、これらのキューはすぐにティックメッセージで完全にいっぱいになります。
問題は、プロセスがティックだけでなく他のタイプのメッセージも相互に送信する必要があるが、ティックがキューをいっぱいにして、他のタイプのメッセージが渡されないようにすることです。
「バンドエイド」ソリューション(面倒です)として、メッセージタイプごとにプロセスごとに複数のキューを許可します。したがって、プロセスにはティックキュー、コマンドキュー、フィルキューなどがあります。
しかし、erlangは、異なるメッセージタイプを運ぶ各「プロセス」への単一のキューを持つことにより、非常にクリーンに見えます。しかし、繰り返しになりますが、メッセージタイプの1つだけのフラッドによってキューが占有されるのをどのように処理しますか?
おそらくこれはerlangの内部についての質問です。erlangには、キュー内のメッセージタイプに内部的に個別の制限がありますか?または、メッセージの種類ごとに内部に個別のキューがありますか?
いずれにせよ、キューがいっぱいで特定の種類のメッセージを受信できない場合、送信プロセスはどのように認識しますか?送信は失敗しますか?それは、送信できないためにerlangでエラー処理が必要になることを意味しますか?
私たちのシステムでは、キューがいっぱいになると追跡し、キューがいっぱいになるまでキューに追加しようとするプロセスが実行されないようにします。これにより、プロセスが呼び出されると、1つのメッセージを送信する余地があることが保証されるため、厄介なエラー処理ロジックが回避されます。
しかし、繰り返しになりますが、同じキューに複数の種類のメッセージを配置するとします。通過する必要のある他の種類のメッセージはブロックされます。
erlangはこの状況を処理するように設計されていないので、キューが単一のメッセージタイプのフラッドでいっぱいになるという問題に対処していないというのは、おそらく誤った印象になりました。
しかし、誰かがこの特定のシナリオをカバーする良い参考情報や本にこの点に答える方法を知っていることを願っています。
javascript - メッセージの受け渡しで行き詰まる background.html >> contentscript.js (chrome 拡張機能)
何千回もここに来ていることは知っていますが、今は立ち往生しています。たくさんの回答を読み、code.google.com を調べましたが、成功しませんでした。background.html
からにchrome 拡張機能でリクエストを送信しようとしていますcontentscript.js
。私はそれを他の方法で動作させることができました。
内部のコードbackground.html
:
内部のコードcontentscript.js
:
通信が逆方向に機能しており、他のmanifest.json
すべてが正常に機能しているため、問題はありません。ありがとうございました!
c++ - 2 つのプログラム間でのメッセージの受け渡し
現在、マスターとスレーブの 2 つのスタンドアロン C++ プログラムがあります。マスターは、 を使用して共有メモリにデータを書き込みboost::interprocess
、メモリから読み取ることができるスレーブを起動します。
私がやりたいことは、スレーブを常に実行し、メモリが書き込まれ、読み取る準備ができたときにマスターがスレーブにメッセージを送信することです。
同じことを達成するために私が考えることができる唯一の方法は、スレーブが共有メモリでオブジェクトの存在を常にチェックし、それが検出されたときにそれを読み取って削除することです。ただし、これは最適ではないようです。
同じことを達成するより良い方法はありますか?
背景:これは私の以前の質問の続きです...
python - Celery で既に実行中のタスクをキャンセルしますか?
私はドキュメントを読んで検索していますが、まっすぐな答えを見つけることができないようです:
すでに実行中のタスクをキャンセルできますか? (タスクが開始され、しばらく時間がかかり、途中でキャンセルする必要があるため)
Celery FAQのドキュメントからこれを見つけました
しかし、これがキューに入れられたタスクをキャンセルするのか、ワーカーで実行中のプロセスを強制終了するのかは不明です。あなたが流すことができる光をありがとう!
mpi - ノードの準備ができているかどうかを「リッスン」する MPI 関数
データを生成し、データに対して必要な計算を行うワーカー ノードに渡す 1 つの「親」ノードが必要です。
親ノードが座って、ワーカーノードがデータを受信する準備ができていることを伝えるのを「聞く」ようにしたいと思います。
これを達成するための最良の方法は何ですか?これにはどの関数を使用すればよいですか? MPI_Send(...) を使用する場合、データを送信するノードを事前に知る必要があります。MPI_Recv(...) を使用して、ランク「i」から準備ができているというメッセージを受信した場合、親ノードは、特定のランクで、他のノードが準備ができていると言うのを待機しません。 「準備完了」メッセージも送信しますか?
親ノードが着信メッセージをリッスンできる関数、または特定のワーカー ノードにメッセージを安全に送信できるタイミングを何らかの形で知る関数を探しています。