私は C# の .NET 4 で作業しています。WorkerProgram.exe の複数のインスタンスを作成する LauncherProgram.exe があり、プロセスの作成時に指定された引数に対していくつかの作業を行います。その後、LauncherProgram.exe は WorkerProgram.exe インスタンスの新しいセットを起動して、いくつかの異なる作業を行います。 .
各 WorkerProgram.exe は、何を処理するかを指示するいくつかのパラメーターを使用して起動され、同時に起動される 1 つ以上の WorkerProgram.exe が存在する可能性があります。WorkerProgram.exe は、指定されたパラメーターを読み取り、いくつかの初期化を実行してから、作業を行う準備が整います。
私が理解しようとしているのは、WorkerProgram.exeの各セットを同時に起動する方法で、各プロセスが持っているLauncherProgram.exeに「伝える」または「信号を送る」または「適切な用語を理解できない」ことです初期化ステップが完了し、開始する準備ができました。セットで起動した WorkerProgram.exe インスタンスで「do your work」の開始を同期したい。
私は次のように動作するように LauncherProgram.exe を設定しています (今のところ型は無視します):
while (there are sets of work to do)
{
for each set of work
{
for each group data in set
create and launch a WorkerProgram.exe for a single set of data
wait for all created WorkerProgram.exe to indicate init is complete
send signal to start processing
}
}
私は実際に、名前付きイベントを使用して複数の生成されたプロセスに信号を送り、同時に何かを開始する小さなテスト プログラムを持っています。
(うまくいけば、上記のすべてが理にかなっています)
「N個のプロセスが初期化の準備ができていることを通知するのを待つ」というビットがわかりません。
「プロセス同期」と「ランデブー」を検索し、名前付きイベントと名前付きセマフォの使用を調べました。スレッドに関することはたくさんありますが、個別のプロセスに関することはあまりありません。
LauncherProgram.exe は、必要に応じて System.Diagnostics.Process クラスを使用して WorkerProgram.exe プロセスを作成します。
検索を絞り込むのに役立つより良い用語を教えていただけるか、設計パターンやメカニズム、または役立つライブラリやクラスを教えていただければ、非常にありがたいです。
ありがとう。