首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一旦销毁,boost::shared_ptr<TTransport>会关闭连接吗?

boost::shared_ptr<TTransport>是C++中的智能指针,用于管理动态分配的TTransport对象的生命周期。当boost::shared_ptr<TTransport>销毁时,它会自动调用TTransport对象的析构函数来释放资源。

然而,boost::shared_ptr<TTransport>本身并不会直接关闭连接。它只负责管理TTransport对象的内存,而TTransport对象可能是一个网络连接的封装,如TCP连接、HTTP连接等。具体是否关闭连接取决于TTransport对象的实现。

在boost库中,TTransport对象的具体实现可能是boost::asio库中的boost::asio::ip::tcp::socket类,或者是其他网络库中的类。这些类通常提供了关闭连接的方法,如close()函数。因此,在销毁boost::shared_ptr<TTransport>之前,可以通过调用TTransport对象的关闭连接方法来确保连接被关闭。

总结起来,boost::shared_ptr<TTransport>销毁时不会直接关闭连接,但可以通过调用TTransport对象的关闭连接方法来实现连接的关闭。具体的关闭方法取决于TTransport对象的实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 通过Thrift访问HDFS分布式文件系统的性能瓶颈分析

    读取完当前block的数据后,关闭与当前的DataNode连接,并为读取下一个block寻找最佳的DataNode; 当读完列表的block后,且文件读取还没有结束,客户端开发库继续向Namenode...如 果传输过程中,有某个datanode出现了故障,那么当前的pipeline会被关闭,出现故障的datanode从当前的pipeline中移除, 剩余的block继续剩下的datanode中继续以...shared_ptr socket(new TSocket("192.168.230.133", 55952));//boost::lexical_cast(argv[...2]))); 29 boost::shared_ptr transport(new TBufferedTransport(socket)); 30 boost...throw new ThriftIOException(e.getMessage()); 21 } 22 }  八、遗留问题   ThriftHandle可以看做是Socket连接句柄

    93010

    C++智能指针

    boost中产生的最号的两个智能指针是scoped_ptr与shared_ptr/weak_ptr。 C++11中也就添加了unique_ptr与shared_ptr/weak_ptr。...https://legacy.cplusplus.com/reference/memory/shared_ptr/ 那么这里的引用计数是如何实现的呢?难道是类的成员当中有一个计数器的?...这是因为: 出了作用域p1,p2销毁,然后剩下ListNode中的内容; prev与next的销毁是ListNode的空间销毁了才会销毁,这里他们互相指着,没有任何一个引用计数可以变为...也就相当于上面模拟实现按的shared_ptr拷贝和赋值不增加引用计数,但是检查指向的资源是否过期等等。...C++ boost给出了更实用的scoped_ptr和shared_ptr和weak_ptr。 C++ TR1,引入了shared_ptr等。不过注意的是TR1并不是标准版。

    16410

    详解 C++ 11 中的智能指针

    ,我之所以还向你介绍一下 std::auto_ptr 的用法以及它的设计不足之处是想让你了解 C++ 语言中智能指针的发展过程,一项技术如果我们了解它过去的样子和发展的轨迹,我们就能更好地掌握它,不是?...现在留下一个矛盾的处境:必须销毁 A 才能销毁其成员变量 m_SelfPtr,而销毁 m_SelfPtr 必须先销毁 A。...记住,一旦智能指针对象接管了你的资源,所有对资源的操作都应该通过智能指针对象进行,不建议再通过原始指针进行操作了。...你一定仍然觉得这个例子也能很明显地看出问题,ok,让我们把这个例子放到实际开发中再来看一下: //连接断开 void MonitorServer::OnClose(const std::shared_ptr...崩溃原因是传入的 conn 对象和上一个例子中的 sp2 一样都是另外一个 std::shared_ptr 的引用,当连接断开时,对应的 TcpConnection 对象可能早已被销毁,而 conn 引用就会变成空指针

    2.7K31

    RAII_ras raf

    C++标准保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终会被调用。...2RAII的分类 根据RAII [2] 对资源的所有权可分为常性类型和变性类型,代表者分别是boostshared_ptr[2]和std::auto_ptr;从所管资源的初始化位置上可分为外部初始化类型和内部初始化类型...boostshared_ptr和std::auto_ptr都是此类型。与之相对的是内部初始化类型。 其中,常性且内部初始化的类型是最为纯粹的RAII形式,最容易理解,最容易编码。... post2 = /*…*/; //port2在最后一个引用它的 //shared_ptr离开作用域后关闭 通过使用上述RAII类型,可以避免程序员忘记关闭端口而引起的泄漏,还可以确保异常发生时栈展开过程中自动释放端口资源...最好的方法是让RAII类型继承于boost::noncopyable[2],而后在容器中使用引用计数的指针: class Resource : public boost::noncopyable {

    39820

    C++(STL):03---智能指针之shared_ptr

    销毁时,原对象的计数器就会递减 一旦一个shared_ptr的计数器为0,就会自动释放该对象的内存 auto p=make_shared(42); //p指向一个引用者 auto q(p);...的自动销毁对象内存机制 由上面可知,当指向一个对象的最后一个shared_ptr对象被销毁时,shared_ptr自动销毁此对象。...错误情景:我们调用f函数来打开一个网络连接,但是在f函数调用之后没有关闭这个连接。...*); //打开连接void disconnect(connection); //关闭连接void f(destination &d){connection c=connect(&d);//...//使用这个连接//如果在f函数退出之前忘记调用disconnect函数,那么该连接就没有关闭} 正确情景:现在我们定义一个新的函数“end_connection”,并且配合shared_ptr类的使用

    1.6K20

    C++:智能指针

    一、智能指针的使用及原理 1.1 为什么需要智能指针 在学习异常的时候,我们知道了由于异常的反复横跳可能导致内存泄露的问题,但是对于一些自定类类型来说他在栈帧销毁的时候会去调用对应的析构函数...,但是以下这种必须手动释放的场景,一旦抛出异常就会造成内存泄露的结果。...= &sp) //防止自己给自己赋值,自己给自己赋值导致内存被释放掉。...1. shared_ptr在其内部,给每个资源都维护了着一份计数,用来记录该份资源被几个对象共享。 2. 在对象被销毁时(也就是析构函数调用),就说明自己不使用该资源了,对象的引用计数减一。...C++ boost给出了更实用的scoped_ptr和shared_ptr和weak_ptr. 3. C++ TR1,引入了shared_ptr等。不过注意的是TR1并不是标准版。 4.

    9500
    领券