1、先定义一个所有线程可见的CRITIACL_SECTION结构变量;
2、在试图访问被保护资源的所有线程初始化上述CRITIACL_SECTION结构变量;
void InitializeCriticalSection(CRITIACL_SECTION *);
3、在对被保护资源访问前,调用:
void EnterCriticalSection(CRITIACL_SECTION *);
4、访问被保护资源结束后,调用:
void LeaveCriticalSection(CRITIACL_SECTION *);
5、当所有线程不需要访问被保护资源时,清理CRITIACL_SECTION结构变量;
void DeleteCriticalSection(CRITIACL_SECTION *);
注:在第3步也可以调用:
bool TryEnterCriticalSection(CRITIACL_SECTION *);该函数会立即返回;如果返回false表示资源被其它线程访问,该线程
不能立即访问被保护资源,但线程不会等待被保护资源,会继续执行后续代码;而EnterCriticalSection若得不到访问权限,会继续等待直
到得到访问权限或超时;