我試圖將一些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