临界区对象是定义在数据段中的一个CRITICAL_SECTION结构。Windows内部使用这个结构记录一些信息,确保在同一时间只有一个线程访问该数据段中的数据。
在任何线程使用此临界区对象之前要对它进行初始化:
void InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
之后,线程要访问临界区中的数据,必须先调用EnterCriticalSection函数,申请进入。操作完成时要使用LeaveCriticalSection函数将临界区还给Windows。当程序不需要使用临界区对象时,要使用DeleteCriticalSection函数将它删除。
临界区对象不能用于进程之间的资源锁定,因为临界区对象不是内核对象。