📄 optex.h
字号:
/******************************************************************************
Module name: Optex.h
Written by: Jeffrey Richter
******************************************************************************/
#pragma once
///////////////////////////////////////////////////////////////////////////////
class COptex {
public:
COptex(DWORD dwSpinCount = 4000);
COptex(PCSTR pszName, DWORD dwSpinCount = 4000);
COptex(PCWSTR pszName, DWORD dwSpinCount = 4000);
~COptex();
void SetSpinCount(DWORD dwSpinCount);
void Enter();
BOOL TryEnter();
void Leave();
BOOL IsSingleProcessOptex() const;
private:
typedef struct {
DWORD m_dwSpinCount;
long m_lLockCount;
DWORD m_dwThreadId;
long m_lRecurseCount;
} SHAREDINFO, *PSHAREDINFO;
HANDLE m_hevt;
HANDLE m_hfm;
PSHAREDINFO m_psi;
private:
static BOOL sm_fUniprocessorHost;
private:
void CommonConstructor(DWORD dwSpinCount, BOOL fUnicode, PVOID pszName);
PSTR ConstructObjectName(PSTR pszResult,
PCSTR pszPrefix, BOOL fUnicode, PVOID pszName);
};
///////////////////////////////////////////////////////////////////////////////
inline COptex::COptex(DWORD dwSpinCount) {
CommonConstructor(dwSpinCount, FALSE, NULL);
}
///////////////////////////////////////////////////////////////////////////////
inline COptex::COptex(PCSTR pszName, DWORD dwSpinCount) {
CommonConstructor(dwSpinCount, FALSE, (PVOID) pszName);
}
///////////////////////////////////////////////////////////////////////////////
inline COptex::COptex(PCWSTR pszName, DWORD dwSpinCount) {
CommonConstructor(dwSpinCount, TRUE, (PVOID) pszName);
}
///////////////////////////////////////////////////////////////////////////////
inline COptex::IsSingleProcessOptex() const {
return(m_hfm == NULL);
}
///////////////////////////////// End of File /////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -