Is there a C++ cross platform “named event like the ”CreateEvent()" in Win32?

梦想的初衷 提交于 2019-12-12 08:05:30

问题


I am looking for something analogous to CreateEvent(), SetEvent() and WaitForMultipleObjects() from the Win32 world.

Specifically this has to be accessible across processes on the same machine.

We are already using Poco for some cross platform stuff, but I don't see that the Poco::Event is what I want. perhaps i am missing something.

EDIT:

To explain what I want to do:

I want process B to know when something happens in process A. This is trivial in win32 - Each process/thread calls CreateEvent() with a name for the event. Process B calls waitForXObject() and Process A calls SetEvent() when something happens. B is signaled.

Again, this is trivial in win32, but how to do it cross-platform.


回答1:


There is no built in way in C++ to do named events. But you can use boost to do it.

You're looking for boost::condition and boost::named_condition

As you also mentioned there exists: Poco.NamedEvent




回答2:


boost has a number of cross platform threading primitives like this.

look at boost:mutex

Actually, look at Cross-Platform equivalent to windows events




回答3:


oops - After seeing Brian's answer about named events it seems I missed Poco's solution:

http://pocoproject.org/docs/Poco.NamedEvent.html

I had only seen Poco.Event

We'll probably use that since it seems to be simpler and lighter weight in the client code.



来源:https://stackoverflow.com/questions/2664913/is-there-a-c-cross-platform-named-event-like-the-createevent-in-win32

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!