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 }
原文链接: https://www.cnblogs.com/wangshaowei/p/9084924.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/391830
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!