如果我的应用程序以 Windows 为目标并且已经在它的某些部分使用了并发运行时。在 ConcRT 任务之外使用 ConcRT 同步结构 ( concurrency:critical_section
) 与标准库实现 ( )相比有什么优点/缺点吗?std::mutex
(例如同步 WinAPI 异步回调或管理 dll 导出函数之间的数据访问)
MSDN 文档<mutex>
指出它基于 ConcRT,但这是否意味着内部互斥体使用critical_section,因此在所有情况下都较慢,因此仅在可移植性方面具有优势?
或者,相反,critical_section 是专门为与 ConcRT 调度程序一起使用而设计的,并且在与 OS 线程一起使用时是一个巨大的过度杀伤力?
PS 这个问题涉及并发运行时中的所有同步结构(critical_section、reader_writer_lock 和 event)。
我也省略了 WinAPI 的CRITICAL_SECTION
,MUTEX
和SRW
其他,假设它们是最快和最轻的解决方案(但不是最漂亮的)。