std:scoped_lock<T>或者std:lock_guard<T>,在每次声明时需要指定T类型。
然而,
1、有的地方用std::mutex。
2、有的地方std::recursive_mutex(虽然这个可以通过合理的设计消除掉recursive的需求)。
3、用std::shared_mutex的倒好说,因为这个要用std::shared_lock、std::unique_lock,不搭配std::scoped_lock用。
也就是说,每次加锁/解锁时都要指明到底是std::mutex,还是std::recursive_mutex,还是很繁琐的。
目前能想到的稍微懒人点的写法,是:
std::mutex m_lock;
std::scoped_lock<decltype(m_lock)> guard1{m_lock};
std::recursive_mutex m_rlock;
std::scoped_lock<decltype(m_rlock)> guard2{m_rlock};
还有没更懒人点的写法,不用指定T的类型的?
--
FROM 123.118.186.*