【发布时间】: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