Переписать этот умный указатель

Я передаю код из ACE в Poco. Я новичок в многопоточном дизайне, поэтому меня это немного смущает!

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

Я не могу просто переписать это так, поскольку Poco :: AutoPtr принимает только один аргумент в качестве шаблона класса

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

Как мне это написать?

1

Решение

Я не уверен что Arc::AutoPtr потому что я не смог найти ничего подобного в документации ACE. Однако, если это так же, как ACE_Refcounted_Auto_Ptr тогда соответствующий typedef для Poco, вероятно, будет typedef Poco::SharedPtr<ResultSet> QueryResult;, Но из документов не ясно, реализует ли SharedPtr в Poco потокобезопасный подсчет ссылок, поэтому вы должны быть осторожны с этим.

Poco::AutoPtr на самом деле навязчивый умный указатель, который требует поддержки от указанного типа (аналогично boost::intrusive_ptr).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]