string类中使用CriticalSection类

来源:互联网 发布:淘宝的保证金能退吗 编辑:程序博客网 时间:2024/05/16 10:18

惊恐临界区类:

#include<Windows.h>

class CriticalSection
{
public:
CriticalSection();
~CriticalSection();
void Enter();
void Leave();
private:
CRITICAL_SECTION m_CritSect;
};
CriticalSection::CriticalSection()
{
InitializeCriticalSection(&m_CritSect);
}
CriticalSection::~CriticalSection()
{
DeleteCriticalSection(&m_CritSect);
}
void CriticalSection::Enter()
{
EnterCriticalSection(&m_CritSect);
}
void CriticalSection::Leave()
{
LeaveCriticalSection(&m_CritSect);

}

惊恐String类中使用CriticalSection()类

#include<Windows.h>
class CriticalSection
{
public:
CriticalSection();
~CriticalSection();
void Enter();
void Leave();
private:
CRITICAL_SECTION m_CritSect;
};
CriticalSection::CriticalSection()
{
InitializeCriticalSection(&m_CritSect);
}
CriticalSection::~CriticalSection()
{
DeleteCriticalSection(&m_CritSect);
}
void CriticalSection::Enter()
{
EnterCriticalSection(&m_CritSect);
}
void CriticalSection::Leave()
{
LeaveCriticalSection(&m_CritSect);
}


class String
{
public:
String();
virtual ~String();
virtual void Set(char* str);
int GetLength();
private:
CriticalSection m_Sync;
char*  m_pData;
};
String::String()
{
m_pData = NULL;
}
String::~String()
{
m_Sync.Enter();
delete[] m_pData;
m_Sync.Leave();
}
void String::Set(char* str)
{
m_Sync.Enter();
delete[] m_pData;
m_pData = new char[::strlen(str) + 1];
::strcpy(m_pData, str);
m_Sync.Leave();
}
int String::GetLength()
{
if (m_pData == NULL)
{
return 0;
}
m_Sync.Enter();
int len = ::strlen(m_pData);
m_Sync.Leave();
return len;
}

0 0
原创粉丝点击