如果我想传输资源,我应该选择哪种参数类型?fig_ptr?或shared_ptr



有一个资源:" AAA",谁的类型为" AAA"。" AAA"由shared_ptr管理,我们可以通过函数获得它的flee_ptr:

std::weak_ptr<AAA> get_aaa_weakPtr();

现在,client_code想要访问" AAA",然后将" AAA"传输到它的child_functions。就像这样:

void mainFunc(){
std::shared_ptr<AAA> sPtr = get_aaa_weakPtr().lock();
assert( sPtr );
// use sPtr
// ...
childFuncA( /* also_need_aaa */ );
childFuncB( /* also_need_aaa */ );
childFuncC( /* also_need_aaa */ );
}

我应该在child_functions中选择哪种参数类型?fig_ptr?或shared_ptr?

在同时编程的情况下,即ChildFuncx可以是异步,您应该通过fige_ptr,并且在功能中,检查指针的有效性(使用fige_ptr :: lock(((并确保使用sTD :: lock_guard访问该资源,在您的情况下,可以直接在主函数中实例化(或根据需要的唯一_lock(。避免全局和静态以避免随着时间的流逝而发展。

相关内容

  • 没有找到相关文章

最新更新