2
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 是否安全?

4

1 回答 1

2

不,存在数据竞赛。一个线程写入 g_a,另一个线程读取 g_a。需要同步。

于 2013-04-19T10:09:06.290 回答