是否存在WaitforSingleObject的C++等价物?

Har*_*Boy 8 c++ multithreading waitforsingleobject c++11

我需要重写一些使用windows WaitforSingleObject函数的代码.

myEvent = CreateEvent( NULL, FALSE, FALSE, szName );
WaitForSingleObject( myEvent, nMilliseconds );
Run Code Online (Sandbox Code Playgroud)

我需要等待事件或超时发生.在直接的C++中是否有相当于这个?

我使用的是STL C++ 11而不是其他任何库,例如boost.

Mar*_* A. 6

您不能将C++ 11线程例程与win32线程一起使用(除非您严重搞乱mingw线程实现,我不建议这样做)并且没有标准C++等同于特定于操作系统的API调用.

你可以,但是使用C++ 11个线程和使用条件变量(CFR.等待)来完成同样的事情,WaitForSingleObject的那样,即

  • 等待对象处于信号状态
  • 等到超时结束

编辑:具体你需要wait_until

  • API调用的等价物是`wait_for`,而不是`wait_until`. (2认同)
  • Visual Studio的`<thread>`可以安全地与winapi线程混合使用吗? (2认同)
  • “搞砸了 mingw 线程”——这不仅仅是 mingw 的事情。VS 还实现了`&lt;thread&gt;` 库,同样地,混合 Win32 和 C++ 线程会导致不利问题 - 它们不会自动兼容。IIRC,VS 使用 ConcRT 来实现 C++ 线程组件。 (2认同)
  • 一些mingw构建确实使用Windows线程模型,不记得哪些,但它可能是相当常见的 (2认同)