在C ++中使用OpenEvent方法等待Event的正确方法是什么?

时间:2017-01-13 09:02:11

标签: c++ events event-handling

我有创建事件的进程A

CreateEvent(NULL, FALSE, FALSE, L"EventA");

然后我有进程B等待EventA。

WaitForSingleObject(h, INFINITE);

在上述等待之前,进程B打开EventA并使用:

HANDLE h = OpenEvent(SYNCHRONIZE, FALSE, L"EventA");

但我无法100%确定当进程B打开它时,进程A将创建EventA。所以我在下面做了:

HANDLE h = OpenEvent(SYNCHRONIZE, FALSE, L"EventA");
while(h == NULL){
    h = OpenEvent(SYNCHRONIZE, FALSE, L"EventA");
    Sleep(1000);
}

这是开场活动的正确方法吗?或者是否有类似WaitForSingleObject的东西,但是用于打开例如WiatForOpenObject?

1 个答案:

答案 0 :(得分:0)

如果N个进程是随机启动的,那么您以前等待主进程(即事件创建程序)出现并创建事件的方式就足够了。

但是,如果我们谈论用于启动多个进程的软件的良好设计,那么总会有一个进程首先生成并执行初始化内容,例如:configurationsevent creations等首先是forks其他将订阅事件的进程。而且这个主过程可以执行各种监控,如监控,重新处理流程。

所以我认为你需要重新思考你的设计。