windows - Windows 中的进程间同步屏障

标签 windows synchronization ipc

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

最佳答案

使用命名事件(参见 CreateEvent 和 WaitForSingleObject API 函数)。每个屏障需要两个事件——每个事件都在应用程序的另一个实例中创建。然后两个实例等待对方的事件。当然,这些事件以后可以重新用于另一个障碍。

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

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

关于windows - Windows 中的进程间同步屏障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9629297/

相关文章:

windows - 什么是 Schannel TLS 致命警报代码?

windows - 脚本忽略退出命令并中断函数 BATCH/CMD

Android:startActivityForResult 不调用 onActivityResult

python - posix_ipc python 包相当于 Windows 吗?

c# - 如何打开 Windows 资源管理器并从桌面应用程序进行搜索?

java - 在 Windows 上的 tomcat 8.5 中安装 pfx SSL 证书

java - 同步:ImageDownloader线程

java - 输入监听器应该同步吗?

javascript - Strongloop script.js 在删除方法 : how run async method in sync? 之前运行 find

linux - mmap 文件支持的映射与 Linux 中的匿名映射