zoukankan      html  css  js  c++  java
  • c++互斥锁的实现

     1 class IMyLock
     2 {
     3 public:
     4     virtual ~IMyLock(){}
     5 
     6     virtual void Lock() const = 0;
     7     virtual void UnLock() const = 0;
     8 };
     9 
    10 class Mutex : public IMyLock
    11 {
    12 public:
    13     Mutex();
    14     ~Mutex();
    15 
    16     virtual void Lock() const;
    17     virtual void UnLock() const;
    18 private:
    19     HANDLE Mutex_;
    20 };
    21 
    22 Mutex::Mutex(){
    23     Mutex_ = ::CreateMutex(NULL, false, NULL);
    24 }
    25 
    26 void Mutex::Lock() const
    27 {
    28     WaitForSingleObject(Mutex_, INFINITE);
    29 }
    30 
    31 void Mutex::UnLock() const
    32 {
    33     ::ReleaseMutex(Mutex_);
    34 }
    35 
    36 class CLock{
    37 public:
    38     CLock(const IMyLock&);
    39     ~CLock();
    40 
    41 private:
    42     const IMyLock& myLock_;            //纯虚类可以这样声明对象
    43 };
    44 
    45 CLock::CLock(const IMyLock& lock) :myLock_(lock)
    46 {
    47     myLock_.Lock();
    48 }
    49 CLock::~CLock(){
    50     myLock_.UnLock();
    51 }
  • 相关阅读:
    CSS介绍
    docker入门
    nginx+uWSGI+django+virtualenv+supervisor发布web服务器
    niginx入门
    常用服务安装部署
    VIM
    linux基本命令
    linux目录分级
    OpenStack共享组件
    kvm认识和安装
  • 原文地址:https://www.cnblogs.com/wangshaowei/p/9084924.html
Copyright © 2011-2022 走看看