나는 BYTE*
, 참조 카운터 및 두 개를 동시에 액세스 할 수 없도록 보호하는 CRITICAL_SECTION
을 포함하는 클래스가 있습니다.std :: tr1 :: shared_ptr가 상호 배제를 수행합니까?
나는 이것을 모두 std::tr1::shared_ptr<BYTE>
으로 바꾸고 싶다.
다중 스레드가 객체가 소유권을 공유 사본이 경우에도, 같은 시간을 읽고 에서 다른 shared_ptr의 오브젝트를 작성할 수 있습니다 다음 MSDN는 말한다. 나는 클래스에서
CRITICAL_SECTION
이 상호 배타적 인 방식으로 내용을을 "잠금"및 변경 그것의 외부에서 사용되는 것을 찾을 때까지
모든 것이 괜찮아 소리. 좋아, 캡슐화를 깰거야. 나는 그것을 바꾸고 싶다.
나는 shared_ptr
이 메모리가 해제된다는 것을 알고 있지만, 메모리에 쓸 때 상호 배제를 보장합니까?
'shared_ptr'은 가리키는 객체에 대해 무엇을하는지에 대한 지식이 없습니다. 동시에 사용되는 경우에도 공유 포인터 컨테이너 자체가 올바르게 작동한다는 것이 보장됩니다. –