2013-01-19 5 views
1

일부 코드를 ACE에서 Poco로 전송 중입니다. 멀티 스레드 디자인에 익숙하지 않아서 조금 혼란 스럽습니다! 마시고 :: AutoPtr 만스마트 포인터 다시 쓰기

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

내가 그것을 어떻게 작성해야 클래스 템플릿으로 하나 개의 인수를 받아들처럼,이처럼 다시 쓸

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

임 수 없습니다?

답변

0

Arc::AutoPtr은 ACE 설명서에서 찾을 수 없기 때문에 확실하지 않습니다. 그러나 ACE_Refcounted_Auto_Ptr과 같으면 Poco에 해당하는 typedef는 아마도 typedef Poco::SharedPtr<ResultSet> QueryResult;입니다. 그러나 Poco의 SharedPtr이 스레드 안전 참조 카운팅을 구현하는지 여부는 문서에서 분명하지 않으므로주의해야합니다.

Poco::AutoPtr은 실제로 뾰족한 유형 (boost::intrusive_ptr과 유사)의 지원이 필요한 방해 성 스마트 포인터입니다.

+0

Poco :: SharedPtr은 스레드로부터 안전한 참조 카운팅을 제공합니다. Default ReferenceCounter는 AtomicCounter를 사용합니다. AtomicCounter는 플랫폼 고유의 원자 프리미티브를 통해 스레드 안전성을 제공합니다. 그렇지 않은 경우 FastMutex를 사용합니다. 사용자는 참조 카운터도 제공 할 수 있습니다. 템플릿 <클래스 C, 클래스 RC = ReferenceCounter, 클래스 RP = 릴리스 정책 > 클래스 SharedPtr {/*...*/} – Alex