[英]C++ - function end and local destruction order
我有以下代码:
class Class
{
public:
std::string Read()
{
std::lock_guard<std::mutex> lock(mutex_);
return data_;
}
private:
std::mutex mutex_;
std::string data_;
};
首先将执行什么-作为该函数的结果,将在堆栈上创建data_
字符串的本地副本(临时副本),然后该锁释放互斥体,或者是其他方式?
如果是这样,下面的代码是否可以解决问题?
return std::string(data_);
互斥对象应该保护data_
并发读/写,以使这些操作不会受到干扰。
该函数将data_
作为右值返回,因此此处的结果将在执行lock
的析构函数(函数退出)并释放mutex_
lock
之前从data_
成员计算得出。
return std::string(data_);
需要? 没有。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.