这篇文章主要介绍了C中旗语内核对象用法实例,有助于深入了解信号量(旗语)的基本用法,需要的朋友可以参考下
本文实例讲述了C中旗语内核对象的用法,分享给大家供大家参考。具体方法如下:
复制代码代码如下://Semaphore.cpp:定义控制台应用程序的入口点。
//
#include 'stdafx.h '
#包含Windows.h
#包含流程。h
处理g _ hSemaphore
DWORD g _ ncount 1=0;
DWORD g _ ncount 2=0;
无符号__stdcall ThreadProc1( void*参数)
{
* WaitForSingleObject(g _ hSemaphore,INFINITE);
for(int I=0;10000英镑我)
{
g _ nConut1
g _ nConut2
}
*释放信号量(g _ hSemaphore,1,NULL);
printf(' thread proc 1 \ n ');
返回0;
}
无符号__stdcall ThreadProc2( void*参数)
{
* WaitForSingleObject(g _ hSemaphore,INFINITE);
for(int I=0;10000英镑我)
{
g _ nConut1
g _ nConut2
}
*释放信号量(g _ hSemaphore,1,NULL);
printf(' thread proc 2 \ n ');
返回0;
}
无符号__stdcall ThreadProc3( void*参数)
{
* WaitForSingleObject(g _ hSemaphore,INFINITE);
for(int I=0;10000英镑我)
{
g _ nConut1
g _ nConut2
}
*释放信号量(g _ hSemaphore,1,NULL);
printf(' thread proc 3 \ n ');
返回0;
}
int _tmain(int argc,_TCHAR* argv[])
{
g _ hSemaphore=:创建信号量(NULL,2,2,NULL);
处理hThread[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 _ ncount 1);
printf('g_count2=%d\n ',g _ ncount 2);
printf('main完成. \ n ');
返回0;
}
希望本文所述对大家的C程序设计有所帮助。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。