⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sh_lock.h

📁 rsa算法打的一个包
💻 H
字号:
// SH_Lock.h: interface for the SH_Lock class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SH_LOCK_H__5CEB3BFD_37CD_45BB_8B60_E480FF34A3AE__INCLUDED_)
#define AFX_SH_LOCK_H__5CEB3BFD_37CD_45BB_8B60_E480FF34A3AE__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "SH_Object.h"

class AFX_EXT_CLASS SH_Lock : public SH_Object 
{
public:
	SH_Lock();
	SH_Lock(LPCTSTR cszName);
	virtual ~SH_Lock();
    
    LPCTSTR GetName(VOID);
    BOOL    Create();
    BOOL    Create(LPCTSTR cszName);
    BOOL    Lock(DWORD dwTimeout=INFINITE);
    BOOL    UnLock();
    
    static const CRITICAL_SECTION Initialize(); 

protected:
    VOID    SetName(LPCTSTR cszName);
    VOID    Close();

private:
    CString m_strName;
    HANDLE  m_hMutex;
};

/**
 *
 *eg.SH_LOCK/SH_UNLOCK utils for thread
 *
 *SH_List<int> my_list;
 *SH_LOCK_DEFINE(my_list);
 *
 *...
 *SH_LOCK(my_list);
 *my_list.Function();
 *SH_UNLOCK(my_list);
 *...
 *
 **/
#define SH_LOCK_NAME(name)          SH__##name##_LOCK
#define SH_LOCK_DEFINE(name)        CRITICAL_SECTION SH_LOCK_NAME(name) = SH_Lock::Initialize()
#define SH_LOCK_DEFINE_STATIC(name) static SH_LOCK_DEFINE(name)
#define SH_LOCK(name)               EnterCriticalSection((LPCRITICAL_SECTION)&SH_LOCK_NAME(name))   
#define SH_UNLOCK(name)             LeaveCriticalSection((LPCRITICAL_SECTION)&SH_LOCK_NAME(name))   

#endif // !defined(AFX_SH_LOCK_H__5CEB3BFD_37CD_45BB_8B60_E480FF34A3AE__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -