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

C/C++ 线程同步测试例子

2016-11-25 13:59 197 查看
void InitializeCriticalSection( LPCRITICAL_SECTION lpCriticalSection
);

[b]void DeleteCriticalSection( LPCRITICAL_SECTION lpCriticalSection
);
[/b]

[b]void EnterCriticalSection( LPCRITICAL_SECTION lpCriticalSection
);
[/b]

[b][b]void LeaveCriticalSection( LPCRITICAL_SECTION
lpCriticalSection );[/b][/b]

CRITICAL_SECTION Section;

long nFirst = 0,nSecond = 0;
BOOL bFlag = FALSE;

DWORD WINAPI ThreadFun(LPVOID lpParam)
{
EnterCriticalSection(&Section);
while(bFlag)
{
nFirst ++;
nSecond ++;
}
LeaveCriticalSection(&Section);
return 0;
}

int main()
{
HANDLE hThread[2] = {0};
bFlag = TRUE;
InitializeCriticalSection(&Section);
hThread[0] = CreateThread(NULL,NULL,ThreadFun,NULL,NULL,NULL);
hThread[1] = CreateThread(NULL,NULL,ThreadFun,NULL,NULL,NULL);

Sleep(2000);
bFlag = FALSE;
WaitForMultipleObjects(2, hThread, TRUE, INFINITE);
cout<<"F=="<<nFirst<<endl;
cout<<"S=="<<nSecond<<endl;

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