#pragma once
/*********************************************
*Subject: MultiThread synchronized
*Date : 2013/6/25
*Author : fzq
*Comment:1、临界区:线程在执行过程中不允许被打断的区域,只要进入到临界区,就会一直运行直到退出临界区
**********************************************/
//临界区
class WFCCritical
{
public:
WFCCritical();
~WFCCritical();
void Lock();
void UnLock();
private:
CRITICAL_SECTION m_mutex;
};
extern WFCCritical g_critical;
template<typename T>
class WFScopeLock
{
public:
WFScopeLock(T& val)
:m_lock(&val)
{
m_lock->Lock();
}
~WFScopeLock()
{
m_lock->UnLock();
}
private:
T* m_lock;
};
#include "stdafx.h"
#include "MultiThread_synchronized.h"
#include <synchapi.h>
WFCCritical g_critical;
WFCCritical::WFCCritical()
{
InitializeCriticalSectionAndSpinCount(&m_mutex,4000);
}
WFCCritical::~WFCCritical()
{
DeleteCriticalSection(&m_mutex);
}
void WFCCritical::Lock()
{
EnterCriticalSection(&m_mutex);
}
void WFCCritical::UnLock()
{
LeaveCriticalSection(&m_mutex);