pek*_*u33 22 c++ std c++14 c++17
C++ 11介绍std::mutex及其扩展版本 - std::timed_mutex.
但是,在c ++ 14中我们有std::shared_timed_mutex,但它的'父',std::shared_mutex将在c ++ 17中添加.
对此有任何合理的解释吗?
如果我不打算使用"定时"功能std::shared_timed_mutex,它会比提议更糟糕(更慢,消耗更多资源)std::shared_mutex吗?
Yak*_*ont 23
共享互斥锁最初有定时,并被调用shared_mutex.
一个实现者(msvc iirc)指出他们可以在没有时间的情况下"更便宜"地实现它.特别是,SRWLOCKWindows上的现有原语是足以实现共享互斥锁的,但是timed需要额外的机制.(通过@tc).(但是,我相信它不仅更容易,因为已经编写,但也从根本上更昂贵,至少在x86/64窗口)
为标准添加新类型为时已晚,但重命名也不算太晚.
所以它被重命名为shared_timed_mutex,并且在下一个标准中添加了不定时版本.
这里至少有一篇涉及重命名的论文.
我们建议将shared_mutex重命名为shared_timed_mutex:
(a)与其他互斥体保持一致(确定命名不一致);
(b)为shared_mutex留出空间,在某些平台上比shared_timed_mutex更有效率.