我试图将一些Windows代码移植到Linux,理想情况下通过独立于平台的库(例如boost),但是我不确定如何移植此位事件代码。跨平台等效于Windows事件
代码位包含两个线程(让我们称它们为A和B)。 A想要做一些只有B才能做的事情,所以它会发送一条消息,然后等待B完成它。在这个窗口看起来像:
void foo();//thread a calls this
void bar(HANDLE evt);
void foo()
{
HANDLE evt = CreateEvent(0,FALSE,FALSE,0);
bCall(boost::bind(&bar, evt));
WaitForSingleObject(evt,INFINITE);
CloseHandle(evt);
}
void bar(HANDLE evt)
{
doSomething();
SetEvent(evt);
}
我看着升压::线程库,但它没有似乎有什么,这样做,我能看到的是关闭了boost :: condition_variable,但它似乎这意味着与一个互斥体结合使用,在这里不是这种情况。
我认为你的特定于Windows的代码在引擎盖下使用了一个互斥锁。它只是把这个摘要摘下来。 – rmeador 2009-11-04 23:26:57
[pthread-like windows手动重置事件]的可能重复(http://stackoverflow.com/questions/178114/pthread-like-windows-manual-reset-event) – jww 2014-02-11 13:36:29
[this question](http:// stackoverflow .com/questions/4692717/win32-reset-event-like-synchronization-class-with-boost-c)也有很好的信息 – Loomchild 2017-01-17 10:44:27