这篇文章主要介绍了C使用关键部分实现线程同步实例,是使用关键部分对前文实例的扩展,具有一定的参考借鉴价值,需要的朋友可以参考下
本文实例讲述了C使用关键部分实现线程同步的方法,在前文C线程同步实例分析的基础上增加了四行代码,使用了四个函数:
EnterCriticalSection:DeleteCriticalSection:EnterCriticalSection:LeaveCriticalSection此时,打印出来的数字就相等了。
具体代码如下:
#include 'stdafx.h '
#包含Windows.h
双字g _ cnt1
双字g _ cnt2
BOOL g _ bContinue=TRUE
临界_截面cs;
DWORD WINAPI线程进程(_ _在LPVOID LP参数中)
{
*输入关键部分;
while(g_bContinue)
{
g _ cnt1
g _ cnt2
}
离开临界区(cs);
返回0;
}
int _tmain(int argc,_TCHAR* argv[])
{
处理hThread[2];
g _ cn t1=g _ cn T2=0;
*初始化临界区;
hThread[0]=:CreateThread(NULL,0,ThreadProc,NULL,0,NULL);
hThread[1]=:CreateThread(NULL,0,ThreadProc,NULL,0,NULL);
睡眠(1000);
g _ bContinue=FALSE
WaitForMultipleObjects(2,hThread,TRUE,INFINITE);
printf('g_cnt1=%d\n ',g _ cn t1);
printf('g_cnt2=%d\n ',g _ CNT 2);
*删除关键部分;
*关闭句柄(hThread[0]);
*关闭句柄(hThread[1]);
返回0;
}
希望本文所述对大家的C程序设计有所帮助。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。