#include #include
using namespacestd;//首先做两个线程,实现两个线程间的同步 上次是利用互斥对象实现线程间的同步CreateMutex函数和事件对象间的同步CreateEvent函数,这次用关键代码段(临界区对象)来实现
DWORD WINAPI Fun1Proc(LPVOID lpParameter);
DWORD WINAPI Fun2Proc(LPVOID lpParameter);int tickets=100;
CRITICAL_SECTION g_cs;//1.定义一个临界区对象
voidmain()
{
HANDLE hThread1;
HANDLE hThread2;
hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
hThread2=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);
CloseHandle(hThread1);
CloseHandle(hThread2);
InitializeCriticalSection(&g_cs); //2.初始化临界对象
Sleep(4000);
DeleteCriticalSection(&g_cs); //3.当函数要结束的时候释放所有没有被拥有的临界区对象相关的成员
}
DWORD WINAPI Fun1Proc(LPVOID lpParameter)
{while(TRUE)
{
EnterCriticalSection(&g_cs); //4.判断是否有线程在访问公共资源,如果有线程正在访问就,不能执行下面的
i