1

N子プロセスが親プロセスからフォークされ、これらの子にメッセージを送信し、子が互いにメッセージを送信するように、UnixでCアプリケーションを作成することになっています。

ただし、問題は、特定のターゲット子プロセスにメッセージを送信する必要があることです。つまり、親は子1に送信し、子1は子2に送信し、...および子n1(循環的に)送信します。

問題は、メッセージキューを1つだけ作成すると、n子のいずれかがメッセージをデキューする可能性があるため(カーネルスケジューラが原因で親プロセスの後に実行される可能性があるため)、メッセージが間違ったプロセスでデキューされることです。

私のアプリケーションでは、最大になります。一度に1つのメッセージがキューにあります。唯一の解決策はn、特定のターゲットプロセスがメッセージを受信できるように、さまざまなメッセージキューを作成し、メッセージを適切なキューに渡すことです。しかし、もっと正当な解決策が必要だと思います。

何か案は?

制約:プロセス間のパイプは許可されていません。ここではmqが非効率的であることを私は知っています。それらも実装します。両方とも必須です。PSこれはちょっとした宿題です(私はhttp://canyoudomyhomework.comの作成者です)が、これは単なる宿題ではなく、難しい質問です。

4

1 に答える 1

1

パフォーマンス要件に応じて、仲介された(ルーター)ソリューションが最も適切であると感じます。

親はルーターとして機能することも、このジョブを実行するための特定のプロセスを生成することもできます。

最初の要素を目的のターゲットとする単純なメッセージ構造を定義します。親プロセスをゼロとして指定することもできます。

各プロセスには、それ自体とブローカーの間に1つのキューしかありません。すべてのメッセージは1つの場所で処理およびルーティングされるため、言及したNxNファンアウトを回避できます。

幸運を

于 2011-03-28T14:09:50.380 に答える