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()は安全ですか?
回答:
回答№1は2いいえ、データ競争があります。あるスレッドはg_aを書き込み、別のスレッドはg_aを読み込みます。同期が必要です。