一、Win32平台
1、相关头文件和接口
#include <windows.h>
CRITICAL_SECTION cs;//定义临界区对象
InitializeCriticalSection(&cs);//初始化临界区
EnterCriticalSection(&cs);//进入临界区
LeaveCriticalSection(&cs);//离开临界区
DeleteCriticalSection(&cs);//删除临界区
//线程同步类。是对Win32临界区对象的封装。
class CMyCriticalSection
{
public:
//CCriticalSection类的构造函数,初始化临界区,析构函数删除临界区。
CMyCriticalSection() { ::InitializeCriticalSection(&m_crit); }
~CMyCriticalSection() { ::DeleteCriticalSection(&m_crit); }
//进人临界区
void Enter() { ::EnterCriticalSection(&m_crit); }
//离开临界区
void Leave() { ::LeaveCriticalSection(&m_crit); }
private:
//内部线程互斥对象
CRITICAL_SECTION m_crit;
};
typedef CMyCriticalSection CMylock;
//临界区锁类。构造函数加锁,析构函数解锁。
class CMyGuard
{
public:
CMyGuard(CMylock &crit) : m_crit(crit) { m_crit.Enter(); }
~CMyGuard() { m_crit.L