浅谈C++资源管理

2018-11-04  本文已影响0人  陈道乐

一, 线程之间的资源管理(LOCK)

critical section是每个线程中访问临界资源的那段代码,不论是硬件临界资源,还是软件临界资源,多个线程必须互斥地对它进行访问。

使用

void Shared::Act () throw (char *)

{

 Lock lock (_critSect);

 // perform action —— may throw

 // automatic destructor of lock

}

控制临界区域对象的封装

为被管理对象增加管理方法

class CritSect

{

  //友元类
 friend class Lock;

 public:

  CritSect () { InitializeCriticalSection (&_critSection); }

  ~CritSect () { DeleteCriticalSection (&_critSection); }

 private:

  void Acquire ()

  {

   EnterCriticalSection (&_critSection);

  }

  void Release ()

  {

   LeaveCriticalSection (&_critSection);

  }
  
 private:

    //临界区域
  CRITICAL_SECTION _critSection;

};

定义锁

在自身声明周期中,对被管理资源进行锁定

class Lock

{

 public:

  Lock (CritSect& critSect) : _critSect (critSect)

  {

   _critSect.Acquire ();

  }

  ~Lock ()

  {

   _critSect.Release ();

  }

 private

  CritSect & _critSect;

};
上一篇 下一篇

猜你喜欢

热点阅读