#include "iostream.h"
#include "windows.h"
DWORD WINAPI Fun1(LPVOID lpParameter);
DWORD WINAPI Fun2(LPVOID lpParameter);
int ticket=100;
CRITICAL_SECTION h_section;
void main()
{
HANDLE hd2;
HANDLE hd1;
hd1=CreateThread(NULL,0,Fun1,NULL,0,NULL);
hd2=CreateThread(NULL,0,Fun2,NULL,0,NULL);
//CloseHandle(hd1);
//我发现注释掉这里好像会正常,否则出现图片的问题,并且只有一个线程在跑
//CloseHandle(hd2);
InitializeCriticalSection(&h_section);
Sleep(4000);
DeleteCriticalSection(&h_section);
}
DWORD WINAPI Fun1(LPVOID lpParameter)
{
while (TRUE)
{
EnterCriticalSection(&h_section);
if(ticket>0)
{
Sleep(1);
cout<<"thread 1:"<<ticket--<<endl;
}
else
break;
LeaveCriticalSection(&h_section);
}
return 0;
}
DWORD WINAPI Fun2(LPVOID lpParameter)
{
while (TRUE)
{
EnterCriticalSection(&h_section);
if(ticket>0)
{
Sleep(1);
cout<<"thread 2:"<<ticket--<<endl;
}
else
break;
LeaveCriticalSection(&h_section);
}
return 0;
}