N
子プロセスが親プロセスからフォークされ、これらの子にメッセージを送信し、子が互いにメッセージを送信するように、UnixでCアプリケーションを作成することになっています。
ただし、問題は、特定のターゲット子プロセスにメッセージを送信する必要があることです。つまり、親は子1に送信し、子1は子2に送信し、...および子n
は1
(循環的に)送信します。
問題は、メッセージキューを1つだけ作成すると、n
子のいずれかがメッセージをデキューする可能性があるため(カーネルスケジューラが原因で親プロセスの後に実行される可能性があるため)、メッセージが間違ったプロセスでデキューされることです。
私のアプリケーションでは、最大になります。一度に1つのメッセージがキューにあります。唯一の解決策はn
、特定のターゲットプロセスがメッセージを受信できるように、さまざまなメッセージキューを作成し、メッセージを適切なキューに渡すことです。しかし、もっと正当な解決策が必要だと思います。
何か案は?
制約:プロセス間のパイプは許可されていません。ここではmqが非効率的であることを私は知っています。それらも実装します。両方とも必須です。PSこれはちょっとした宿題です(私はhttp://canyoudomyhomework.comの作成者です)が、これは単なる宿題ではなく、難しい質問です。