A c++ class wrapper to simplify the use of CRITICAL_SECTION and avoid dead-lock

原创 2002年04月22日 09:32:00

The first class is a simple wrapper of CRITICAL_SECTION. The second class provides a scoped lock. Even an exception occurs, the destructor of CGuard can automatically release the lock.

static CThreadMutext g_lockSomething;

// a function that want to access some thing

...

CGuard<CThreadMutext> guard(lockSomething);

 

// A c++ class wrapper to simplify the use of CRITICAL_SECTION
class CThreadMutex
{
public:
 CThreadMutex()
 {
  ::InitializeCriticalSection(&m_cs);
 }
 ~CThreadMutex()
 {
  ::DeleteCriticalSection(&m_cs);
 }
 void Enter() const
 {
  ::EnterCriticalSection((LPCRITICAL_SECTION)&m_cs);
 }
 void Leave() const
 {
  ::LeaveCriticalSection((LPCRITICAL_SECTION)&m_cs);
 }

#if(_WIN32_WINNT >= 0x0400)
 BOOL TryEnter() const
 {
  return ::TryEnterCriticalSection((LPCRITICAL_SECTION)&m_cs);
 }
#endif /* _WIN32_WINNT >= 0x0400 */

private:
 CRITICAL_SECTION m_cs;

 HIDDEN_COPY(CThreadMutex);
 MEM_LEAK_DETECT;
};

// Gurad class that use stack to autoly perform lock and unloack action
template <class MUTEX>
class CGuard
{
public:
 CGuard(const MUTEX& mutex)
  :m_oMutex(mutex)
 {
  m_oMutex.Enter();
 }
 ~CGuard()
 {
  m_oMutex.Leave();
 }
private:
 const MUTEX& m_oMutex;
 CGuard(const CGuard&);
 CGuard& operator = (const CGuard&);
};

Fragment:关于Avoid non-default constructors in fragments的错误

关于Avoid non-default constructors in fragments的错误
  • MaximusKiang
  • MaximusKiang
  • 2014年06月19日 10:30
  • 3012

Avoid non-default constructors in fragments: use a default constructor plus Fragment报错的解决方法

在创建fragment时,你可能在打包时碰到如下错误 Error:Error: Avoid non-default constructors in fragments: use a default c...
  • chniccs
  • chniccs
  • 2016年04月27日 10:35
  • 8930

Android Fragment avoid non-default constructors in fragments use a default constructor plus fragment

一、出现情况。 新建Fragment并重新构造函数传递参数的时候。 二、出现原因。 当Fragment被销毁,在重建的时候,系统只会调用默认的无参构造函数,这样我们自己定义的参数就有可能不能正确初...
  • wblyuyang
  • wblyuyang
  • 2016年01月18日 15:37
  • 971

Error:Error: Avoid non-default constructors in fragments: use a default construct

问题描述: Error:Error: Avoid non-default constructors in fragments: use a default constructor plus Frag...
  • u011005173
  • u011005173
  • 2016年07月19日 14:21
  • 698

Avoid non-default constructors in fragments的解决方法

今天在使用Android Studio打包的时候遇到了一个错误,错误的提示信息是这样子的:“Avoid non-default constructors in fragments: use a def...
  • runningampH
  • runningampH
  • 2016年04月06日 14:20
  • 3083

Error: Wrapper cannot find servlet class XXX or a class it depends on

在进行servlet调用的时候,如果出现上述错误提示 首先:检查你的servlet配置有木有写错,必须是完整的包名+类名 其次:确保你的servlet编译之后的class文件一定存在(根据你的bu...
  • wangyinbin
  • wangyinbin
  • 2013年06月06日 13:44
  • 6023

Wrapper cannot find servlet class CounterServlet or a class it depends on

将项目名改完后(一种方法是右键项目-)
  • welcomelyl
  • welcomelyl
  • 2014年10月19日 21:23
  • 1080

Wrapper cannot find servlet class DepServlet or a class it depends on

在进行servlet调用的时候,如果出现上述错误提示 首先:检查你的servlet配置有木有写错,必须是完整的包名+类名 其次:确保你的servlet编译之后的class文件一定存在(根据...
  • wang5397
  • wang5397
  • 2017年03月04日 21:37
  • 214

PMD规则之Java Logging Rules

PMD规则之Java Logging Rules
  • jack0511
  • jack0511
  • 2010年07月09日 15:13
  • 3696

Avoid non-default constructors in fragments

在使用Android Studio时Fragment类报 Avoid non-default constructors in fragments
  • yyqasg
  • yyqasg
  • 2014年11月13日 12:38
  • 2268
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:A c++ class wrapper to simplify the use of CRITICAL_SECTION and avoid dead-lock
举报原因:
原因补充:

(最多只允许输入30个字)