Windows中的进程间同步障碍

时间:2012-03-09 05:19:06

标签: windows synchronization ipc

我试图在Windows中的不同进程之间建立障碍。它们本质上是同一进程的两个副本(将它们作为两个单独的线程而不是进程运行不是一个选项)。 我们的想法是在计划的不同阶段设置障碍,以确保两个流程同时开始每个阶段。 在Windows中实现此功能的最有效方法是什么?

1 个答案:

答案 0 :(得分:3)

使用命名事件(请参阅CreateEvent和WaitForSingleObject API函数)。每个屏障需要两个事件 - 每个事件在应用程序的另一个实例中创建。然后两个实例都在等待彼此的事件。当然,这些事件可以在以后再次用于另一个障碍。

虽然存在一种复杂性 - 因为事件名称是全局唯一的(为简单起见,我们这样说),每个事件都有不同的名称,可能以实例的进程ID为前缀。因此,应用程序的每个实例都必须获取另一个实例的ID,以便查找由另一个实例创建的事件的名称。

如果您有一个窗口化应用程序,则可以广播一条消息,该消息将通知应用程序的第二个实例存在第一个实例。