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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
827
(1): 736 02/11/15 13:07 AAS
まだ言ってるのか。
>参照カウントのインクリメントにはロックは*原理的に*必要不可欠。
>してないのはシングルスレッドを前提にしてる場合だけ。
>わかった?

void ref() {
EnterCriticalSection(&m_mutex);
 InterlockedIncrement(&m_ref); 
LeaveCriticalSection(&m_mutex);
}
void release() {
EnterCriticalSection(&m_mutex);
 if (InterlockedDecrement(&m_ref) == 0) {
  delete this;
 }
LeaveCriticalSection(&m_mutex);
}
としたら満足か?(W
835: 02/11/15 13:28 AAS
>>827
> としたら満足か?(W
で、バグは直ったのか? 漏れが満足したからってバグが消えるわけじゃないぞ。

void Item::ref() {
 InterlockedIncrement(&m_ref); 
}
Item* List::get() {
EnterCriticalSection(&m_mutex);
Item* p = ...;
p->ref();
LeaveCriticalSection(&m_mutex);
return p;
}
この例で行くとListのget()とremove()で競合が起きるんだろ?
ならListのほうで排他処理をするのが自明の理。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.027s