您的位置:首页 > 编程语言

关键代码区 线程同步

2014-01-06 18:08 225 查看
#include <windows.h>

DWORD WINAPI Fun1proc(LPVOID lpParameter); // thread data
DWORD WINAPI Fun2proc(LPVOID lpParameter);
int ticket = 100;

CRITICAL_SECTION g_cs;

void main()
{
InitializeCriticalSection(&g_cs);
DWORD dThreadID1 = 123;
DWORD dThreadID2 = 456;
HANDLE hThread1 = CreateThread(NULL,0,Fun1proc,NULL,0,&dThreadID1);
HANDLE hThread2 = CreateThread(NULL,0,Fun2proc,NULL,0,&dThreadID2);

CloseHandle(hThread1);
CloseHandle(hThread2);

Sleep(4000);

DeleteCriticalSection(&g_cs);

}
DWORD WINAPI Fun1proc(LPVOID lpParameter)
{

while (TRUE)
{

EnterCriticalSection(&g_cs);
if (ticket>0)
{

cout<<"thread1 sailed "<<ticket--<<endl;
}
else
break;

LeaveCriticalSection(&g_cs);

}

return 0;
}

DWORD WINAPI Fun2proc(LPVOID lpParameter)
{

while (TRUE)
{

EnterCriticalSection(&g_cs);
if (ticket>0)
{

cout<<"thread2 sailed "<<ticket--<<endl;
}
else
break;

LeaveCriticalSection(&g_cs);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: