2014-09-26 140 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

相关问题