C++相談室 part81
■ このスレッドは過去ログ倉庫に格納されています
0369デフォルトの名無しさん
2010/05/21(金) 10:42:28お返事ありがとうございます。
>>361
それぞれのスレッドで
if (p->unique())
{
//特別な処理
}
p = shared_ptr<hoge>();
こんな感じにするわけですが、スレッドだと排他処理を別途書かない限り、両方でuniqueがFALSE返すことがありえますので無理かと。
>>362
適しているのかはわかりません。
現状では自前の参照カウントでやっています。
やろうとしていることがshared_ptrでも可能だったら、そちらのほうがベターだとと思ったしだいです。
>>363
weak_ptrを使ったとしても
スレッドA weak_ptr作成
スレッドB weak_ptr作成
スレッドA shared_ptr解放
スレッドB shared_ptr解放
スレッドA weak_ptr::expired()
スレッドB weak_ptr::expired()
と動作した場合、双方で「俺が消した」ことになってしまいます。
shared_ptrでの解放処理と、参照カウントの取得は、スレッド不可分でなければ成り立たないかと思います。
■ このスレッドは過去ログ倉庫に格納されています