gpt4 book ai didi

c++ - `unique_lock`、 `scoped_lock` 和 `lock_guard` 中指定的 mutex_type 的用例是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:46:35 24 4
gpt4 key购买 nike

用于保护 std::mutex 的 c++11 mutex RAII 类型都有一个 typedef:

typedef Mutex mutex_type;

这个成员 typedef 有什么意义?起初我认为它可以用来概括创建一个对象来移动锁(在 unique_lock 的情况下)例如:

template<SomeLock>
void function(SomeLock in)
SomeLock::mutex_type newMutex;
//Do something

但我无法想象它的用途。

需要进一步注意的是,在locks 的实现中似乎没有在任何地方使用它(至少在 VisualC++ 中没有)。

成员 mutex_type 的用例是什么?

最佳答案

在标准库中,每个模板参数都有一个类型别名是很正常的。副手,我不记得 std 中的一个模板,没有将它的所有模板参数别名作为成员类型

在一组相关类中为类型别名使用不同的名称允许该组与其他类轻松区分,例如对于 SFINAE

template<typename Lock, typename = std::void_t<Lock::mutex_type>>
void usesLock(Lock lock); // Substitution failure for most instantiations of Lock

它还允许您轻松指定适当类型的参数。

template<typename Lock>
void usesMutex(Lock::mutex_type & mut);

关于c++ - `unique_lock`、 `scoped_lock` 和 `lock_guard` 中指定的 mutex_type 的用例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50168577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com