【发布时间】:2013-08-16 00:17:08
【问题描述】:
如果我的应用程序以 Windows 为目标并且已经在它的某些部分使用了并发运行时。在 ConcRT 任务之外,与标准库实现 (std::mutex) 相比,使用 ConcRT 同步结构 (concurrency:critical_section) 是否有任何优点/缺点? (例如同步 WinAPI 异步回调或管理 dll 导出函数之间的数据访问)
<mutex> 的 MSDN 文档指出它基于 ConcRT,但这是否意味着内部互斥体使用critical_section,因此在所有情况下都较慢,因此仅在可移植性方面具有优势?
或者相反,critical_section 是专门为与 ConcRT 调度程序一起使用而设计的,并且在与 OS 线程一起使用时是一个巨大的过度杀伤力?
附:这个问题涉及并发运行时中的所有同步结构(critical_section、reader_writer_lock 和 event)。
我也忽略了 WinAPI 的 CRITICAL_SECTION、MUTEX、SRW 和其他,假设它们是最快和最轻的解决方案(但不是最漂亮的)。
【问题讨论】:
-
"因此在所有情况下都会变慢" 是什么让这有必要?仅仅因为它是一个抽象并不意味着它更慢。
-
我认为这可能是它可能会变慢的原因。另外,正如你所说,我还没有找到任何证据。
标签: c++ c++11 concurrency-runtime