2014-09-26 139 views
4

我需要重寫一些使用Windows WaitforSingleObject函數的代碼。有沒有一個C++等價的WaitforSingleObject?

myEvent = CreateEvent(NULL, FALSE, FALSE, szName); 
WaitForSingleObject(myEvent, nMilliseconds); 

我需要等待事件或超時發生。 直C++中是否有與此相當的內容?

我正在使用STL C++ 11,而不是任何其他庫,如boost。

+1

http://en.cppreference.com/w/cpp/thread/condition_variable – 2014-09-26 09:50:23

+1

請澄清問題。取決於你使用的庫。 STL?促進? C++語言沒有集成的操作系統功能,如果這是你所要求的。 – StarShine 2014-09-26 09:51:36

+0

如果你使用STL C++ 11線程,是的 – 2014-09-26 09:52:19

回答

4

你不能在Win32線程中使用C++ 11線程例程(除非你嚴重搞砸了mingw線程實現,我不會推薦),並且沒有標準的C++等價於特定於OS的API調用。

可以,但是使用C++ 11個線程和使用condition variables(CFR。等待)來實現這一目標WaitForSingleObject做同樣的事情,即

  • 等待一個目的是在一個信號狀態
  • 等到超時時間

編輯:具體你需要wait_until

+2

API調用的等價物將是'wait_for',而不是'wait_until'。 – 2014-09-26 11:15:45

+2

可以將Visual Studio的''與winapi線程安全混合嗎? – 2014-09-26 11:16:05

+1

「弄明白線程」 - 這不只是一個明確的事情。 VS還實現''庫,同樣,混合使用Win32和C++線程可能會導致不利的問題 - 它們不會自動兼容。 IIRC,VS使用ConcRT來實現C++線程組件。 – Niall 2014-09-26 11:21:33

相關問題