私はすでにこのように書き込みのためにミューテックスでポインタを保護しています
// thread1
if(pointer)
{
boost::mutex::scoped_lock lock(pointer_mutex);
if(pointer)
pointer->DoStuff();
}
// thread2
if(pointer)
{
boost::mutex::scoped_lock lock(pointer_mutex);
if(pointer)
pointer = anotherPointer;
}
// thread3
if(pointer)
{
boost::mutex::scoped_lock lock(pointer_mutex);
pointer = 0;
}
ポインターが 99.999 回 null であるため、そのミューテックスをブロックの外に配置したくありません。
これはクラッシュせずに正常に動作しますが、スレッドセーフと宣言するのに十分な経験がありません。
私の質問は:
if(pointer) ポインタ = 0; ポインター = anotherPointer; 原子?
ありがとうございました。