代码之家  ›  专栏  ›  技术社区  ›  Tim

在Win32中有一个C++的跨平台“命名事件”吗?

  •  7
  • Tim  · 技术社区  · 14 年前

    我正在寻找类似于来自win32世界的createevent()、setevent()和waitformultipleobjects()的东西。

    具体来说,这必须可以在同一台机器上跨进程访问。

    我们已经将poco用于一些跨平台的东西,但是我不认为poco::事件是我想要的。也许我错过了什么。

    编辑:

    为了解释我想做什么:

    我想让进程B知道进程A中什么时候发生了什么。这在win32中很简单-每个进程/线程都用事件的名称调用createEvent()。进程B调用waitForXObject(),进程A调用setEvent()。B收到信号。

    同样,这在win32中是微不足道的,但是如何跨平台进行。

    4 回复  |  直到 5 年前
        1
  •  4
  •   Brian R. Bondy    14 年前

    C++中没有内置的方式来命名事件。但你可以用boost来做。

    你在找 boost::condition boost::named_condition

    正如你所提到的: Poco.NamedEvent

        2
  •  2
  •   Community Nick Bolton    7 年前

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

    看boost:mutex

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

        3
  •  1
  •   Tim    14 年前

    哦-在看到布赖恩对命名事件的回答后,我似乎错过了poco的解决方案:

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

    我只看到过poco.event

    我们可能会使用它,因为它在客户端代码中看起来更简单、更轻。

        4
  •  0
  •   no one special    5 年前

    你可以用C++ 11来实现这个跨平台。下面是一个例子: https://github.com/moya-lang/Event