在Win32中是否有一个C ++交叉平台“命名事件,如”CreateEvent()“?

时间:2010-04-19 02:30:31

标签: c++ events cross-platform signals

我正在寻找类似于Win32世界中的CreateEvent(),SetEvent()和WaitForMultipleObjects()的东西。

具体而言,必须可以在同一台机器上的进程之间访问它。

我们已经将Poco用于一些跨平台的东西,但我没有看到Poco :: Event就是我想要的。也许我错过了一些东西。

编辑:

解释我想做的事情:

我希望进程B知道进程A中发生了什么。这在win32中是微不足道的 - 每个进程/线程都调用带有事件名称的CreateEvent()。当事情发生时,进程B调用waitForXObject()并且进程A调用SetEvent()。 B发出信号。

同样,这在win32中是微不足道的,但如何跨平台做到这一点。

3 个答案:

答案 0 :(得分:4)

C ++中没有内置的方法来执行命名事件。但你可以使用boost来做到这一点。

您正在寻找boost::conditionboost::named_condition

正如您还提到的那样:Poco.NamedEvent

答案 1 :(得分:2)

boost有许多这样的跨平台线程原语。

看看boost:mutex

实际上,请查看Cross-Platform equivalent to windows events

答案 2 :(得分:1)

oops - 在看到Brian关于命名事件的答案后,我似乎错过了Poco的解决方案:

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

我只见过Poco.Event

我们可能会使用它,因为它在客户端代码中似乎更简单,更轻。