自分がやろうとしていることについて、どうやって発信するのが最善なのかよくわからないので、ここでアイデアを求めようと思いました。
N 個のプログラムがあり、すべてがメモリ マップ ファイルを介して ProcA という 1 つのプロセスと通信する必要があります。
グループ N のプログラムを開くと、ProcA が開いているかどうかがチェックされ、開いていない場合は起動されます。ここで、この問題が発生します...
ProcA の準備ができたら、それを生成したプロセスと、マップされたメモリが作成され、通信を開始できることを通信できるようにする必要があります。
これを達成するためにミューテックスを使用することを考えていました。スポーン処理はミューテックスの取得と解放をループで試行し、ミューテックスが別の場所で作成されたことが返されるまで、それが作成者であるかどうかを確認します。私が言ったように、N個のプログラムが一度にこれを実行し、複数がこのようにスピン、取得、および解放している場合、それらは互いにロックしているのを見て、代わりにProcAであると考えるので、これでも潜在的に問題があるようです.
では、ProcA が営業中であることを通知するまで N 個のプロセスをブロックする最善の方法は何でしょうか?
ありがとう!
編集
さらに明確にするために、ProcAを生成するプロセスに、ProcAが引き継ぐことができるメモリマップを作成させようとしました。しかし、私は同じ問題を抱えていることがわかりました.ProcAがそれをつかむ前にそれを行うと、スポーンプロセスはいつ共有メモリを解放するかを知る必要があるため、メモリマップが解放されます.
編集 2
2 つのプロセス間でポインター データを渡す必要があるため、メモリ マップされたファイルが唯一のオプションであり、パイプ、ソケットなどは機能しません。