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;
}
);
[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;
}
相关文章推荐
- unix 线程同步之 条件变量 及 互斥锁 测试例子
- C++线程同步 CCRITICALSECTION(临界区类)附自己写的测试代码
- C++多线程编程例子 Demo 关键代码段 临界区 实现线程同步
- [C++] socket - 4 [线程同步 简单例子]
- c++中为什么父类名可以直接调用自己的非静态函数测试例子!(父类名::非静态函数)
- c++读写文件和测试程序运行时间的例子
- C++线程同步方式及例子
- C++的引用的一个测试例子
- c++ 指针的几个测试例子
- 转载:c++读写文件和测试程序运行时间的例子
- 一个最简单的com组件的例子(C++)
- [总结]发送邮件共有几种方法,测试成功的例子
- 测试一下 Intel C++8.0 对模板的支持程度zz
- 通过例子学习Lua(6) ---- C/C++中用Lua函数(转)
- C++用OTL访问Oracle数据库的例子
- c/c++中指针学习的两个绝好例子
- C++多重继承的例子
- C++中对象间的相互操作例子(2005-6-1)
- Linux下,使用C/C++编写"静态链接库"的一个简单例子
- 对于c/c++中指针学习的两个绝好的例子