临界区 |
临界区是一种最简单的同步对象,它只可以在同一进程内部使用。它的作用是保证只有一个线程可以申请到该对象 | |
void InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection ); | 产生临界区 |
void DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection ); | 删除临界区 |
void EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection ); | 进入临界区,相当于申请加锁,如果该临界区正被其他线程使用则该函数会等待到其他线程释放 |
bool TryEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection ); | 进入临界区,相当于申请加锁,和EnterCriticalSection不同如果该临界区正被其他线程使用则该函数会立即返回FALSE,而不会等待 |
VOID LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection ); | 退出临界区,相当于申请解锁 |
下面的示范代码演示了如何使用临界区来进行数据同步处理:
//全局变量
int iCounter=0;
CRITICAL_SECTION criCounter;
DWORD threadA(voi