원래 질문:
답변:
예, 처음 두 질문은 정확합니다. std::shared_ptr의 참조 계산 및 소멸자 호출은 스레드로부터 안전합니다.
세 번째 질문도 맞습니다. std::shared_ptr은 그 안에 저장된 객체에 대한 스레드 안전성을 보장하지 않습니다. 객체 자체는 스레드로부터 안전하지 않을 수 있으므로 적절한 동기화 없이 여러 스레드에서 객체에 액세스하면 정의되지 않은 동작이 발생할 수 있습니다.
예:
다음을 고려하세요. 의사 코드 조각:
// Thread I shared_ptr<A> a (new A (1)); // Thread II shared_ptr<A> b (a); // Thread III shared_ptr<A> c (a); // Thread IV shared_ptr<A> d (a); d.reset (new A (10));
이는 Reset()이 동일한 객체에 대한 다른 스레드의 참조에 영향을 주지 않기 때문입니다. d는 새 인스턴스를 가리키는 유일한 공유 포인터이고, 다른 참조(a, b, c)는 원래 인스턴스를 계속 가리킵니다.
위 내용은 std::shared_ptr이 관리하는 객체에 대해 스레드로부터 안전합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!