O thread shared_ptr <XXX> é seguro?

Eu tenho uma pergunta sobreboost::shared_ptr<T>.

Há muita discussão.

using namespace boost;

class CResource
{
  // xxxxxx
}

class CResourceBase
{
public:
   void SetResource(shared_ptr<CResource> res)
   {
     m_Res = res;
   }

   shared_ptr<CResource> GetResource()
   {
      return m_Res;
   }
private:
   shared_ptr<CResource> m_Res;
}

CResourceBase base;

//----------------------------------------------
// Thread_A:
    while (true)
    {
       //...
       shared_ptr<CResource> nowResource = base.GetResource();
       nowResource.doSomeThing();
       //...
    }

// Thread_B:
    shared_ptr<CResource> nowResource;
    base.SetResource(nowResource);
    //...
Q1

E se Thread_A não me importo com onowResource é o mais novo, esta parte do código tem algum problema?

Quero dizer quando Thread_B nãoSetResource() completamente, Thread_A obtenha um ponto inteligente errado porGetResource()?

Q2

O que significa thread-safe?

Se eu não me importo se o recurso é mais novo, oshared_ptr<CResource> nowResource travar o programa quando onowResource for lançado ou o problema destruirá oshared_ptr<CResource>?

questionAnswers(5)

yourAnswerToTheQuestion