掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
少し複雑な排他処理の方法 (ID:72793)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
「メソッドB」がリエントラントであるならば「メソッドB」を 所有し、それを何回コールしているか管理する「親B」が必要なのでは ないでしょうか。「メソッドB」を使用するスレッドは「親B」経由で 呼ぶようにします。「親B」は「メソッドB」のコール回数が0の時 「メソッドA」に対して同期オブジェクトを排他コントロールします。 「メソッドA」は同じ同期オブジェクトに対して排他コントロールします。 親B() { static int B_Call_Cnt = 0; if( 0 == B_Call_Cnt){ Lock_A_with_blocking();} B_Call_Cnt++; B(); //「メソッドB」 B_Call_Cnt--; if( 0 == B_Call_Cnt) Unlock_A(); }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.