【问题标题】:How to Port to Linux Interprocess Event with AutoResetEvent from Windows如何从 Windows 使用 AutoResetEvent 移植到 Linux 进程间事件
【发布时间】:2013-12-07 06:54:29
【问题描述】:

我当前的 Windows 代码使用命名事件进行进程间通信。可以有许多进程在等待事件,当它发出信号时,所有等待的进程都被释放,然后事件返回到非信号状态。我为此使用 PulseEvent 函数。

如何在 Linux 中做到这一点? pthread 函数似乎是线程间通信。我看不出信号量在哪里可以提供与 Windows 相同的行为。 Posix 信号量似乎只释放一个等待线程。如果信号量可以释放所有等待的线程,那么这将起作用。我在 Linux 中缺少什么东西吗?

【问题讨论】:

  • 您是否考虑过使用 Qt 之类的可移植库??
  • 我看不出它在哪里支持我需要的功能。
  • 根据您想要做什么,可能适合使用条件变量 (pthread_cond_init()/pthread_cond_wait()/pthread_cond_broadcast()/pthread_cond_destroy()) 或障碍 (pthread_barrier_init()/pthread_barrier_wait()/pthread_barrier_destroy())。
  • 自动重置事件在 Linux 中很难,而且我从未见过。我见过手动事件,一个很好的等价物似乎是pevents

标签: linux windows events inter-process-communicat


【解决方案1】:

看起来 futex 可以提供 Windows 事件的行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    相关资源
    最近更新 更多