最近没时间捣鼓啥,也没什么内容可写。
先把自己捣鼓的几个基础类放上来,已做记录
namespace DEF{ class Noncopyable { protected: Noncopyable() {} ~Noncopyable() {} private: Noncopyable(const Noncopyable&); const Noncopyable& operator=(const Noncopyable&); }; } //namespace DEF
noncopyable
使用其他的类 继承此类可避免不想看到的拷贝操作。
namespace DEF{ class CCriticalSection :public Noncopyable { public: CCriticalSection(){ InitializeCriticalSection(&cs_); } ~CCriticalSection(){ DeleteCriticalSection(&cs_); } void Lock(){ EnterCriticalSection(&cs_); } void Unlock(){ LeaveCriticalSection(&cs_); } private: CRITICAL_SECTION cs_; }; class CCSLock :public Noncopyable { public: explicit CCSLock(CCriticalSection& cs) :cs_(cs){ cs_.Lock(); } ~CCSLock(){ cs_.Unlock(); } private: CCriticalSection& cs_; }; }//namespace DEF
一个windows 多线程锁的类
使用方法如下:
class CTest :public DEF::Noncopyable{ public: void test(); private: DEF::CCriticalSection cs_; } void CTest::test() { DEF::CCSLock lock(cs_); // do something // 退出前 自动析构 退出临界区(CriticalSection) }