C++ 我们正在写这个智能指针

C++ 我们正在写这个智能指针,c++,smart-pointers,ace,poco-libraries,C++,Smart Pointers,Ace,Poco Libraries,我正在将一些代码从ACE传输到Poco。我是多线程设计的新手,所以它让我有点困惑 typedef Arc::AutoPtr<ResultSet, ACE_Thread_Mutex> QueryResult; 我不能像这样重写它,因为Poco::AutoPtr只接受一个参数作为类模板 typedef Poco::AutoPtr<ResultSet, Poco::Mutex> QueryResult; 我应该如何编写它?我不确定Arc::AutoPtr是什么,因为我在AC

我正在将一些代码从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可能是typedef Poco::SharedPtr QueryResult;。但是从文档中不清楚Poco中的SharedPtr是否实现了线程安全引用计数,因此您必须小心


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

Poco::SharedPtr确实提供了线程安全的引用计数。默认ReferenceCounter使用AtomicCounter,它通过平台特定的原子原语或FastMutex(如果这些原语不可用)提供线程安全。用户还可以提供其引用计数器:模板类SharedPtr{/*…*/}