Я передаю код из 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
тогда соответствующий typedef для Poco, вероятно, будет typedef Poco::SharedPtr<ResultSet> QueryResult;
, Но из документов не ясно, реализует ли SharedPtr в Poco потокобезопасный подсчет ссылок, поэтому вы должны быть осторожны с этим.
Poco::AutoPtr
на самом деле навязчивый умный указатель, который требует поддержки от указанного типа (аналогично boost::intrusive_ptr
).
Других решений пока нет …