类/结构的风格与版式例子

 

/*! @class
********************************************************************************
<PRE>

类名称
   : CSem
功能
     : 封装信号量相关操作
异常类
   : CSem::Exp
--------------------------------------------------------------------------------
备注     : -
典型用法 : -
--------------------------------------------------------------------------------
作者     : 白杨
</PRE>
*******************************************************************************/
class CSem
{
public:
///////////////////////////////////////////////////////////////////////
类型定义

    //! 异常类
    struct Exp : public byExp
    {
       
enum
        {
           
ERR_CREATE = 1,
          
 ERR_OPEN
        };
             
        
Exp(IN UINT nErr = 0, IN const stringEx& stDescription = "")
            :
byExp(nErr, stDescription)
            {}
    };

p
ublic:
/////////////////////////////////////////////////////////////
构造、析构、初始化

    
//!
构造函数 - 创建一个新的信号量
    explicit CSem(IN long    nInitCount,
                 
IN long    nMaxCount = 1,
                  IN
LPCTSTR pstrName  = NULL) throw(Exp);

   
//!
构造函数 - 打开一个已创建的命名信号量
   
explicit CSem(IN LPCTSTR pstrName = NULL) throw(Exp);

    ~
CSem();

public
:
///////////////////////////////////////////////////////////////////////
公用方法

   
//!
申请资源
   
bool P(IN DWORD nTimeOut = INFINITE);

  
 //!
归还资源
    bool V(IN long nReleaseCount = 1);

private
:
///////////////////////////////////////////////////////////////////////////
属性
    HANDLE m_hSemaphore;

private
:
/////////////////////////////////////////////////////////////////////
禁用的方法
    CSem(IN const CSem& rhs);
    
CSem& operator=(IN const CSem& rhs);
};