[過去ログ] マルチスレッドプログラミング相談室 (986レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
941(1): 772 02/11/17 00:29 AAS
>>923
あ、違った。O1がBスレッドにあるという時点で
既に参照カウントがアガってなきゃいかんのか。
鬱だ…。
DataType O1;
hr = pDataList->GetItem(index, &O1) ;
if (FAILED(hr)) { /* エラー*/ }
if (IsWanted(O1)
とか。ふむ。確かにリスト側で排他したくなるし、
同時に他スレッドで削除されてると面倒。やっと分かった。
942(4): 767=793=902=918=921 02/11/17 02:31 AAS
>>941
参照を得る/切るタイミングでアトミックにカウントが上がる/下がる必要が
あるからなぁ。
そうでないと、無効なオブジェクトを参照してしまう。
ならば、参照カウントが 0 でも有効な(というより、無効かどうか判別できる)
ものを作るのも一つの手だな。
bool Object::ref(){
bool valid = false;
cs_.enter();
if(refCount_ > 0){
refCount_++;
valid = true;
}
cs_.leave();
return result;
}
void Object::release(){
cs_.enter();
if(refCount_ > 0){
refCount_--;
if(refCount_ == 0){
garbages__.add(this);
}
}
cs_leave();
}
で、安全なタイミングで(ってそれが一番むずい気も)garbages__(グローバル変数)
の要素を delete してやると。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.102s