boost::shared_ptr<A> g_a;
void func1(boost::shared_ptr<A> v)
{
g_a = v;
}
void func2()
{
boost::shared_ptr<A> a = g_a;
// a is good?
}
当func1()和func2()从不同的线程执行时,func2()的a是安全的?
No。存在数据竞赛。一个线程写g_a,另一个线程读g_a。同步需要的。