重写这个智能指针

Re-writing this smart pointer

本文关键字:指针 智能 重写      更新时间:2023-10-16

我正在把一些代码从ACE转移到Poco。我是多线程设计的新手,所以它让我有点困惑!

typedef Arc::AutoPtr<ResultSet, ACE_Thread_Mutex> QueryResult;

我不能这样重写它,因为Poco::AutoPtr只接受一个参数作为类模板

typedef Poco::AutoPtr<ResultSet, Poco::Mutex> QueryResult;

我该怎么写?

我不确定Arc::AutoPtr是什么,因为我在ACE文档中找不到这样的东西。然而,如果它与ACE_Refcounted_Auto_Ptr相同,那么Poco的相应类型定义可能是typedef Poco::SharedPtr<ResultSet> QueryResult;。但是从文档中不清楚Poco中的SharedPtr是否实现了线程安全的引用计数,所以你必须小心。

Poco::AutoPtr实际上是一个侵入式智能指针,它需要point类型的支持(类似于boost::intrusive_ptr)。