美文网首页
浅谈C++资源管理

浅谈C++资源管理

作者: 陈道乐 | 来源:发表于2018-11-04 01:20 被阅读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;
    
    };
    

    相关文章

      网友评论

          本文标题:浅谈C++资源管理

          本文链接:https://www.haomeiwen.com/subject/aialxqtx.html