gpt4 book ai didi

c++ - 破坏 unique_ptr 的不同方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:16:58 28 4
gpt4 key购买 nike

我用 unique_ptr 成员分析了一个类。该成员可以从不同的线程使用。还有一种方法可以销毁该成员:

void uninitialize()
{
std::unique_ptr<Worker> worker;
{
std::lock_guard<std::mutex> guard(mtx_);
worker = std::move(worker_);
}
}

我想知道这个 impl 的目的是什么。上面和下面的实现有什么区别吗? :

void uninitialize()
{
std::lock_guard<std::mutex> guard(mtx_);
worker_.reset();
}

Worker 没有定义移动构造函数。

最佳答案

不同之处在于,在第一个代码段中,互斥量只会保持足够长的时间,以便 worker 获得 worker_ 拥有的对象的所有权;该对象的销毁将无人看管。在第二个片段中,直到 .reset() 完成后才会释放互斥量,这意味着它在对象被销毁时被保留。

关于c++ - 破坏 unique_ptr 的不同方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57330651/

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