我有两个 C++ 进程(A 和 B),在 Windows 下执行,一个启动另一个。我想有效地单线程执行它们。例如:
- 启动过程 A
- A创造B
- A 暂停
- B 执行一些固定的操作
- B暂停,A恢复
- A 执行一些固定的操作
- A暂停,B恢复
- (重复 4 - 7)
哪种 Windows 同步和 IPC 服务最适合实现此类行为?
我有两个 C++ 进程(A 和 B),在 Windows 下执行,一个启动另一个。我想有效地单线程执行它们。例如:
哪种 Windows 同步和 IPC 服务最适合实现此类行为?
在这种情况下,事件将起作用:
只要确保您有错误处理,因此如果另一个进程挂起或意外终止,每个进程都可以恢复并执行任何必要的操作。超时可以处理挂起情况,等待其他进程的句柄(使用 WaitForMultipleObjects() 以及进程和事件句柄)可以确定其他进程是否/何时终止。
将两个事件句柄 (CreateEvent) 传递给进程 B。当进程 a 完成工作时向一个句柄发出信号,在进程 b 完成工作时发出另一个句柄信号。每个进程调用 WaitForSingleObject() 来等待另一个进程完成一组工作。
对于进程间同步,您可以使用semaphores。这是文档。