在C++中等待带有OpenEvent方法的事件的正确方法是什么



>我有创建事件的进程 A

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

然后我有正在等待事件 A 的进程 B。

WaitForSingleObject(h, INFINITE);

在上述等待之前,进程 B 打开事件 A,其中包含:

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

但我不能 100% 确定当进程 B 打开事件 A 时,进程 A 会创建它。所以我在下面做了:

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

这是无法创建的开幕活动的正确方式吗?或者有没有类似WaitForSingleObject的东西,但用于打开例如WiatForOpenObject?

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

但是,如果我们谈论一个软件的良好设计,其中使用多个进程来启动,那么总有一个进程首先生成并执行启动操作,例如:configurationsevent creations等,然后它forks其他进程将订阅事件。并且该主进程可以执行各种操作,例如监视,重新激活进程。

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

相关内容

  • 没有找到相关文章

最新更新