何时在 std::shared_lock 上使用 defer_lock?

问题描述 投票:0回答:2

我从cppreference看到:

std::shared_lock<Mutex>::shared_lock
 C++ Thread support library std::shared_lock 
shared_lock() noexcept;
(1) (since C++14)
shared_lock( shared_lock&& other ) noexcept;
(2) (since C++14)
explicit shared_lock( mutex_type& m );
(3) (since C++14)
shared_lock( mutex_type& m, std::defer_lock_t t ) noexcept;
(4) (since C++14)

并且:

4) Does not lock the associated mutex.

好吧,如果这个 defer_lock 意味着我们不锁定互斥锁,那么这个

lock
有什么用呢?

什么时候需要指定

defer_lock
参数,什么样的使用场景?

谢谢!

c++ locking mutex share deferred
2个回答
2
投票

稍后您可以随时使用

lock()
锁定互斥体。

有时,由于作用域规则或其他原因,您不希望在创建锁对象时立即锁定任何内容;但您仍然希望在离开声明范围时自动释放锁。

这允许您实例化一个锁对象,而不是立即锁定任何东西,而是稍后再锁定。

    


0
投票

lock()

	
© www.soinside.com 2019 - 2024. All rights reserved.