我正在使用 C# 中的 .NET 4 工作。我有 LauncherProgram.exe,它将创建 WorkerProgram.exe 的多个实例,让它们对创建进程时提供的参数做一些工作,然后 LauncherProgram.exe 将启动一组新的 WorkerProgram.exe 实例来做一些不同的工作.
每个 WorkerProgram.exe 都会使用一些参数来启动,这些参数告诉它要处理什么,并且可以同时启动一个或多个 WorkerProgram.exe。WorkerProgram.exe 读取提供的参数,执行一些初始化,然后就可以开始工作了。
我想弄清楚的是如何让每组 WorkerProgram.exe 同时启动“告诉”或“信号”或“我无法弄清楚正确的术语”每个进程都有的 LauncherProgram.exe完成初始化步骤并准备开始。我想在一组启动的 WorkerProgram.exe 实例中同步“做你的工作”的开始。
我正在将我的 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 进程,如果有帮助的话。
如果你能给我更好的术语来帮助缩小我的搜索范围,或者给我指出一个设计模式或机制,或者一个有帮助的库或类,我将非常感激。
谢谢。