aby*_*s.7 4 c++ gcc shared-ptr
这是一个代码示例:
class A {
boost::mutex a_mutex;
boost::shared_ptr<int> a;
boost::shared_ptr<int> clone_a(void) {
boost::lock_guard<boost::mutex> lock(a_mutex);
return a;
}
};
Run Code Online (Sandbox Code Playgroud)
建议尽管编译器优化,但boost::shared_ptr复制构造函数调用A::a将在boost::lock_guard析构函数调用之前.所以,打电话安全A::clone_a()吗?
如果"安全"意味着你不会参加数据竞赛a,那么是的.就像你说的那样.
但是,正如您可能知道的那样,它不会保护对*a(或*clone_a())的进一步访问.我不确定,为什么这个方法称为"克隆",因为它没有克隆任何东西.