C++中Semaphore内核对象用法实例
本文实例讲述了C++中Semaphore内核对象的用法,分享给大家供大家参考。具体方法如下:
//Semaphore.cpp:定义控制台应用程序的入口点。
//
#include"stdafx.h"
#include<Windows.h>
#include<process.h>
HANDLEg_hSemaphore;
DWORDg_nConut1=0;
DWORDg_nConut2=0;
unsigned__stdcallThreadProc1(void*pArguments)
{
::WaitForSingleObject(g_hSemaphore,INFINITE);
for(inti=0;i<10000;i++)
{
g_nConut1++;
g_nConut2++;
}
::ReleaseSemaphore(g_hSemaphore,1,NULL);
printf("ThreadProc1\n");
return0;
}
unsigned__stdcallThreadProc2(void*pArguments)
{
::WaitForSingleObject(g_hSemaphore,INFINITE);
for(inti=0;i<10000;i++)
{
g_nConut1++;
g_nConut2++;
}
::ReleaseSemaphore(g_hSemaphore,1,NULL);
printf("ThreadProc2\n");
return0;
}
unsigned__stdcallThreadProc3(void*pArguments)
{
::WaitForSingleObject(g_hSemaphore,INFINITE);
for(inti=0;i<10000;i++)
{
g_nConut1++;
g_nConut2++;
}
::ReleaseSemaphore(g_hSemaphore,1,NULL);
printf("ThreadProc3\n");
return0;
}
int_tmain(intargc,_TCHAR*argv[])
{
g_hSemaphore=::CreateSemaphore(NULL,2,2,NULL);
HANDLEhThread[3];
hThread[0]=(HANDLE)::_beginthreadex(NULL,0,ThreadProc1,NULL,0,NULL);
hThread[1]=(HANDLE)::_beginthreadex(NULL,0,ThreadProc2,NULL,0,NULL);
hThread[2]=(HANDLE)::_beginthreadex(NULL,0,ThreadProc3,NULL,0,NULL);
::WaitForMultipleObjects(2,hThread,TRUE,INFINITE);
printf("g_count1=%d\n",g_nConut1);
printf("g_count2=%d\n",g_nConut2);
printf("mainfinished.\n");
return0;
}
希望本文所述对大家的C++程序设计有所帮助。
热门推荐
10 小红书平安祝福语简短
11 生日祝福语大全女孩简短
12 收生日红包祝福语 简短
13 领证幽默祝福语简短
14 法考面试祝福语简短
15 老哥出门祝福语简短语
16 送灯祝福语简短独特
17 幼儿狗年祝福语大全简短
18 好听的元旦简短祝福语