gpt4 book ai didi

c++ - 如果 unique_lock 在其生命周期内不再使用,是否应该在解锁后释放?

转载 作者:行者123 更新时间:2023-11-28 02:53:16 24 4
gpt4 key购买 nike

我正在使用 std::mutex 在函数的开头复制 std::shared_ptr

// Lock the mutex
unique_lock<mutex> guard(d_mutex);

// Copy a shared_ptr
auto ptr = d_ptr;

// Unlock the mutex
guard.unlock();

// Operate with local ptr copy

在操作期间,守卫保持与 d_mutex 的关联。

我的问题是:除了 unlock() 之外,还有什么理由 release() 守卫?

最佳答案

成员函数 std::unique_lock::release 的目的是能够将 lock 的所有权转移到其他地方。它类似于成员函数 std::unique_ptr::release,它将 指针 的所有权(即释放内存的责任)转移给其他代码。

这意味着:不,在 std::unique_lock 解锁后不需要释放

顺便说一下:如果您只需要保护对 std::shared_ptr 的并发访问,那么您应该看一下 原子操作 std::shared_ptr:

Clang 3.5 已经支持这些操作,尽管实现不是无锁。 GCC 4.8 根本不支持这些操作。

关于c++ - 如果 unique_lock 在其生命周期内不再使用,是否应该在解锁后释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22590886/

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