草庐IT

shared_lock

全部标签

c++ - 返回 shared_ptr 时如何实现协变返回类型?

usingnamespaceboost;classA{};classB:publicA{};classX{virtualshared_ptrfoo();};classY:publicX{virtualshared_ptrfoo();};返回类型不是协变的(因此它们也不是合法的),但如果我使用原始指针代替它们就会是。解决此问题的常用习语是什么(如果有的话)? 最佳答案 我认为解决方案基本上是不可能的,因为协方差取决于与智能指针不兼容的指针算法。当Y::foo返回shared_ptr对于动态调用者,它必须转换为shared_ptr使用前

c++ - 返回 shared_ptr 时如何实现协变返回类型?

usingnamespaceboost;classA{};classB:publicA{};classX{virtualshared_ptrfoo();};classY:publicX{virtualshared_ptrfoo();};返回类型不是协变的(因此它们也不是合法的),但如果我使用原始指针代替它们就会是。解决此问题的常用习语是什么(如果有的话)? 最佳答案 我认为解决方案基本上是不可能的,因为协方差取决于与智能指针不兼容的指针算法。当Y::foo返回shared_ptr对于动态调用者,它必须转换为shared_ptr使用前

解决Git配置error:could not lock config file....No such file or directory

问题说明新安装git出现无法设置用户名和邮箱的方法。$gitconfig--globaluser.name“用户名”$gitconfig--globaluser.email“邮箱”当在gitbash里设置用户名邮箱出现类似以下提示时的解决方法。GITerror:couldnotlockconfigfileC:/Users/FZQ/Desktop/%USERPROFILE%/…Nosuchfileordirectory这里说在我的电脑C盘/Users/FZQ/Desktop/中没有找到对应的文件或者目录,判断是环境配置出了问题。解决方法此电脑右键选择属性下拉找到高级系统设置在系统变量中找到HOM

c++ - 使用 gdb 检查 boost shared_ptr

以下是我的源代码:#include#includeclassMyClass{public:MyClass(){i=10;}private:inti;};intmain(intargc,constchar*argv[]){boost::shared_ptrobj(newMyClass());return0;}我想查看gdb中的obj,查看成员变量i的值。这是我用普通打印得到的:29boost::shared_ptrobj(newMyClass());(gdb)n30return0;(gdb)pobj$1={px=0x602010,pn={pi_=0x602030}}我尝试了thislin

c++ - 使用 gdb 检查 boost shared_ptr

以下是我的源代码:#include#includeclassMyClass{public:MyClass(){i=10;}private:inti;};intmain(intargc,constchar*argv[]){boost::shared_ptrobj(newMyClass());return0;}我想查看gdb中的obj,查看成员变量i的值。这是我用普通打印得到的:29boost::shared_ptrobj(newMyClass());(gdb)n30return0;(gdb)pobj$1={px=0x602010,pn={pi_=0x602030}}我尝试了thislin

c++ - 惯用 std::auto_ptr 还是只使用 shared_ptr?

既然shared_ptr在tr1中,你认为std::auto_ptr的使用会发生什么?它们都有不同的用例,但auto_ptr的所有用例也都可以用shared_ptr解决。你会放弃auto_ptr还是在你想明确表示在任何给定点只有一个类拥有所有权的情况下继续使用它?我的看法是,使用auto_ptr可以增加代码的清晰度,正是通过添加细微差别和代码设计的指示,但另一方面,它在训练时增加了另一个微妙的问题新程序员:他们需要了解智能指针以及它们如何工作的细节。当您在任何地方都只使用一个智能指针时,您只需制定一条规则“将所有指针包装在shared_ptr中”并完成它。您对此有何看法?

c++ - 惯用 std::auto_ptr 还是只使用 shared_ptr?

既然shared_ptr在tr1中,你认为std::auto_ptr的使用会发生什么?它们都有不同的用例,但auto_ptr的所有用例也都可以用shared_ptr解决。你会放弃auto_ptr还是在你想明确表示在任何给定点只有一个类拥有所有权的情况下继续使用它?我的看法是,使用auto_ptr可以增加代码的清晰度,正是通过添加细微差别和代码设计的指示,但另一方面,它在训练时增加了另一个微妙的问题新程序员:他们需要了解智能指针以及它们如何工作的细节。当您在任何地方都只使用一个智能指针时,您只需制定一条规则“将所有指针包装在shared_ptr中”并完成它。您对此有何看法?

c++ - 返回 protected 数据时如何使用 lock_guard

我有一个关于boost::lock_guard(或类似的作用域锁)的使用以及在return语句中使用应受锁保护的变量的问题。销毁本地对象和复制返回值的顺序是怎样的?返回值优化对此有何影响?例子:DataClass::GetData(){boost::lock_guardlock(this->mMutex);returnthis->mData;}这是否正确(如果mData是受mMutex保护的变量)?或者我是否必须使用本地范围和临时范围,如下例所示:DataClass::GetData(){Dataret;{boost::lock_guardlock(this->mMutex);ret=

c++ - 返回 protected 数据时如何使用 lock_guard

我有一个关于boost::lock_guard(或类似的作用域锁)的使用以及在return语句中使用应受锁保护的变量的问题。销毁本地对象和复制返回值的顺序是怎样的?返回值优化对此有何影响?例子:DataClass::GetData(){boost::lock_guardlock(this->mMutex);returnthis->mData;}这是否正确(如果mData是受mMutex保护的变量)?或者我是否必须使用本地范围和临时范围,如下例所示:DataClass::GetData(){Dataret;{boost::lock_guardlock(this->mMutex);ret=

c++ - boost async_* 函数和 shared_ptr 的

我经常在代码中看到这种模式,将shared_from_this作为第一个参数绑定(bind)到成员函数并使用async_*函数调度结果。这是另一个问题的示例:voidConnection::Receive(){boost::asio::async_read(socket_,boost::asio::buffer(this->read_buffer_),boost::bind(&Connection::handle_Receive,shared_from_this(),boost::asio::placeholders::error,boost::asio::placeholders::