いくつかの簡単な基礎クラス
3721 ワード
最近何かをいじる時間もないし、書く内容もない.
まず自分でたたいたいくつかの基礎類を置いて、すでに記録しました
noncopyable
このようなコピー操作を回避するには、他のクラスを使用して継承します.
Windowsマルチスレッドロックのクラス
使用方法は次のとおりです.
まず自分でたたいたいくつかの基礎類を置いて、すでに記録しました
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)
}