【发布时间】:2012-03-09 05:19:06
【问题描述】:
我正在尝试在 Windows 中的不同进程之间建立障碍。它们本质上是同一进程的两个副本(不能将它们作为两个单独的线程而不是进程运行)。 这个想法是在程序的不同阶段设置障碍,以确保两个过程同时开始每个阶段。 在 Windows 中实现此功能的最有效方法是什么?
【问题讨论】:
标签: windows synchronization ipc
我正在尝试在 Windows 中的不同进程之间建立障碍。它们本质上是同一进程的两个副本(不能将它们作为两个单独的线程而不是进程运行)。 这个想法是在程序的不同阶段设置障碍,以确保两个过程同时开始每个阶段。 在 Windows 中实现此功能的最有效方法是什么?
【问题讨论】:
标签: windows synchronization ipc
使用命名事件(请参阅CreateEvent 和 WaitForSingleObject API 函数)。每个屏障需要两个事件 - 每个事件在应用程序的另一个实例中创建。然后两个实例都等待对方的事件。当然,这些事件可以在以后用于另一个障碍。
虽然存在一种复杂性 - 由于事件名称是全局唯一的(为了简单起见,我们这样说),每个事件都有不同的名称,可能以实例的进程 ID 为前缀。因此,应用程序的每个实例都必须获取另一个实例的 ID,才能找到另一个实例创建的事件的名称。
如果您有一个窗口应用程序,您可以广播一条消息,通知应用程序的第二个实例第一个实例的存在。
【讨论】: