2chのような掲示板システムってP2Pで part.2

このエントリーをはてなブックマークに追加
113266
>>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 が必ず解放される。

こんな具合に書くことで例外処理を省けます。
どうでしょ?