在Windows多线程应用程序中临界区是一个非常重要的概念
VC98\Include\ WINNT.H中定义的临界区结构体:
struct RTL_CRITICAL_SECTION{
PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
LONG LockCount;
LONG RecursionCount;
HANDLE OwningThread;
HANDLE LockSemaphore;
ULONG_PTR SpinCount;
};RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION;
VC98\Include\WINBASE.H中:typedef RTL_CRITICAL_SECTION CRITICAL_SECTION;
eg: 相关函数VC98\Include\WINBASE.H
CRITICAL_SECTION g_DB_CS;//定义一个临界区
InitializeCriticalSection(&g_DB_CS);//初始化临界区
EnterCriticalSection(&g_DB_CS);//进入临界区
.............//Mydata操作数据
LeaveCriticalSection(&g_DB_CS);//离开临界区
线程访问数据时需加上:EnterCriticalSection(&g_DB_CS);//进入临界区和
LeaveCriticalSection(&g_DB_CS);//离开临界区
同一时刻只有一个线程能进入临界区,从而确保同一时刻只有一个线程访问数据。