[過去ログ] マルチスレッドプログラミング相談室 (986レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
902
(1): 02/11/15 23:39 AAS
参照を獲得する処理そのものがアトミックでなければいけない。
つまり、ref や release に到達する時点でそのオブジェクトに対する排他制御が
かかってなきゃいけない。それらのメソッドに入ってからでは遅い。

Object* List::get(int index){
 criticalSections_[index % 4].enter();
 Object* o = items_[index];
 if(o != NULL){
  o->ref();
 }
 criticalSections_[index % 4].leave();
 return o;
}

void List::remove(index){
 criticalSections_[index % 4].enter();
 Object* o = items_[index];
 if(o != NULL){
  o->release();
  items_[index] = NULL;
 }
 criticalSections_[index % 4].leave();
 return o;
}

こんな感じか?
908
(2): 02/11/16 01:24 AAS
>>902
getって削除された要素を飛ばして次の要素を返すんじゃないか?
あと、removeが値を返してるよ。

>>905
その参照を増やす手段がgetなんだけど…
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.038s