>>112 >>112 CriticalSection の方の解決策を思いつきました。
class SectionController{
CriticalSection& m_section ;
SectionController( CriticalSection& section) : m_section( section) {} ;
~SectionController( void){ if( m_section.locked()) leave() ; } ;
void enter( void){ m_section.enter() ; } ;
void leave( void){ m_section.leave() ; } ;
} ;
こういうクラスを作っておけば、
SectionController localSection( someSection) ;
localSection.enter() ;
someAction() ; // ここで例外が発生すると、
localSection.leave() ; // こいつは呼ばれないが、
// 関数スコープの最後で自動変数である localSection が必ず解放される。
こんな具合に書くことで例外処理を省けます。
どうでしょ?