【发布时间】:2014-02-18 13:51:43
【问题描述】:
在 Win32 C++ 程序中实现条件变量时,最好使用 Win32 函数、类和数据类型(例如 CreateThread、SleepConditionVariableCS、WaitForSingleObjectEx、ReleaseMutex、CONDITION_VARIABLE)或来自 C++11 标准库的那些(例如thread、wait、join、unlock、condition_variable)?
由于这个问题的答案可能不是二元的,在做出这样的决定时应该考虑哪些因素?
【问题讨论】:
-
鉴于 Visual Studio 尚未完成标准的实施,如果可移植性不是问题,我现在会使用 Windows 调用。
-
函数有前置条件和后置条件。当你编写软件时,你就有了“目的”。函数可能满足您的目的或不能满足您的目的,但它们并不是“更好”或“更差”。它们只是函数。
-
@woolstar 我实际上正在使用 Code::Blocks 和最新版本的 MinGW,但这是一个很好的考虑。
-
你有没有打算跨平台?
-
在某些情况下没有同类比较。例如,
CreateEvent()可以用std::condition_varaible复制,但底层实现有很大不同,因此在尝试使用这些构造时可能会出现性能差异。
标签: c++ winapi c++11 condition-variable