"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > std :: shared_ptr이 객체 스레드 안전을 보장 할 수 있습니까?

std :: shared_ptr이 객체 스레드 안전을 보장 할 수 있습니까?

2025-04-15에 게시되었습니다
검색:509

Is std::shared_ptr Enough to Ensure Thread Safety for Your Objects?

[shared_ptr는 하나의 스레드만이 공유 대상에서 삭제 운영을 실행할 수있는 능력입니다. shared_ptr의 참조 수가 0에 도달하면 객체가 삭제됩니다. 이것은 여러 스레드가 동시에 동시에 삭제하려고 시도하지 않고 정의되지 않은 동작을 방해하지 않도록합니다.

객체 스레드 안전

shared_ptr a(new A(1));
shared_ptr b(a), c(a), d(a);
d.reset(new A(10));
std :: shared_ptr은 참조 계산 및 삭제에 대한 스레드 안전을 제공하는 것이 중요하다는 것을 인식하는 것이 중요합니다. 객체 자체가 스레드 안전성으로 구현되지 않으면 여러 스레드에서 동시에 액세스하면 레이스 조건 또는 기타 문제로 이어질 수 있습니다.

Is std::shared_ptr Enough to Ensure Thread Safety for Your Objects? 
shared_ptr 재설정 및 스레드 가시성

를 고려하십시오. shared_ptr b (a), c (a), d (a); d.reset (new a (10)); shared_ptr d를 재설정하면 a의 기존 인스턴스를 새 인스턴스로 대체합니다. 그러나이 변경 사항은 Shared_ptr d를 고정하는 스레드 IV에만 보일 것입니다. shared_ptrs a, b 및 c를 보유하는 스레드는 A의 원래 인스턴스를 계속 참조합니다. 이는 shared_ptr reset ()가 스레드에서 객체의 가시성에 영향을 미치지 않음을 보여줍니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3