// deadlock.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
#include <process.h>
using namespace std;
CRITICAL_SECTION cs1;
CRITICAL_SECTION cs2;
unsigned int _stdcall threadProc(void* param)
{
while (TRUE)
{
EnterCriticalSection(&cs1);
cout<<"thread 进入临界区cs1\n";
EnterCriticalSection(&cs2);
cout<<"thread 进入临界区cs2\n";
LeaveCriticalSection(&cs2);
LeaveCriticalSection(&cs1);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
InitializeCriticalSection(&cs1);
InitializeCriticalSection(&cs2);
_beginthreadex(NULL,0,threadProc,NULL,0,NULL);
while (TRUE)
{
EnterCriticalSection(&cs2);
cout<<"主线程 进入临界区cs2\n";
EnterCriticalSection(&cs1);
cout<<"主线程 进入临界区cs1\n";
LeaveCriticalSection(&cs1);
LeaveCriticalSection(&cs2);
}
DeleteCriticalSection(&cs1);
DeleteCriticalSection(&cs2);
return 0;
}