windows,三个线程(+ ,- ,*);WaiForSingleObject;
来源:互联网 发布:基于tensorflow的应用 编辑:程序博客网 时间:2024/06/09 16:59
//CRITICAL_SECTION g_cs;
unsigned __stdcall FirstThread(void *p)
{
//EnterCriticalSection(&g_cs);
g_num += 5;
printf("FirstThread g_num is %d\n", g_num);
//LeaveCriticalSection(&g_cs);
_endthread();
return 0;
}
unsigned __stdcall SecondThread(void *p)
{
//EnterCriticalSection(&g_cs);
g_num -= 2;
printf("SecondThread g_num is %d \n", g_num);
//LeaveCriticalSection(&g_cs);
_endthread();
return 0;
}
unsigned __stdcall ThirdThread(void *p)
{
//EnterCriticalSection(&g_cs);
g_num *= 2;
printf("ThirdThread g_num is %d \n", g_num);
//LeaveCriticalSection(&g_cs);
_endthread();
return 0;
}
void main()
{
unsigned threadID1;
unsigned threadID2;
unsigned threadID3;
int i = 20;
while (i -- >0)
{
HANDLE hd1 = (HANDLE)_beginthreadex(NULL, 0, &FirstThread, NULL, 0, &threadID1);
WaitForSingleObject(hd1, INFINITE);
CloseHandle(hd1);
HANDLE hd2 = (HANDLE)_beginthreadex(NULL, 0, &SecondThread, NULL, 0, &threadID2);
WaitForSingleObject(hd2, INFINITE);
CloseHandle(hd2);
HANDLE hd3 = (HANDLE)_beginthreadex(NULL, 0, &ThirdThread, NULL, 0, &threadID3);
WaitForSingleObject(hd3, INFINITE);
CloseHandle(hd3);
}
system("pause");
}
/////////////最好是下面的////////////
int g_num = 0;
//CRITICAL_SECTION g_cs;
unsigned __stdcall FirstThread(void *p)
{
//EnterCriticalSection(&g_cs);
g_num += 5;
printf("FirstThread g_num is %d\n", g_num);
//LeaveCriticalSection(&g_cs);
_endthreadex(0);
return 0;
}
unsigned __stdcall SecondThread(void *p)
{
//EnterCriticalSection(&g_cs);
g_num -= 2;
printf("SecondThread g_num is %d \n", g_num);
//LeaveCriticalSection(&g_cs);
_endthreadex(0);
return 0;
}
unsigned __stdcall ThirdThread(void *p)
{
//EnterCriticalSection(&g_cs);
g_num *= 2;
printf("ThirdThread g_num is %d \n", g_num);
//LeaveCriticalSection(&g_cs);
_endthreadex(0);
return 0;
}
void main()
{
unsigned threadID1;
unsigned threadID2;
unsigned threadID3;
int i = 20;
while (i -- >0)
{
HANDLE hd1 = (HANDLE)_beginthreadex(NULL, 0, &FirstThread, NULL, 0, &threadID1);
WaitForSingleObject(hd1, INFINITE);
CloseHandle(hd1);
HANDLE hd2 = (HANDLE)_beginthreadex(NULL, 0, &SecondThread, NULL, 0, &threadID2);
WaitForSingleObject(hd2, INFINITE);
CloseHandle(hd2);
HANDLE hd3 = (HANDLE)_beginthreadex(NULL, 0, &ThirdThread, NULL, 0, &threadID3);
WaitForSingleObject(hd3, INFINITE);
CloseHandle(hd3);
}
system("pause");
}
- windows,三个线程(+ ,- ,*);WaiForSingleObject;
- waiforsingleobject()
- 线程通信练习(三个线程交替)
- 三个线程循环切换
- 三个线程顺序执行
- 三个线程,依次打印
- Windows线程(6)
- Windows线程(6)
- Java线程交互的三个方法(四)
- C++ 11 三个线程打印ABC(顺序打印)
- CountDownLatch--控制三个线程执行顺序(三)
- 现有三个线程T1,T2,T3 三个线程依次执行
- 三个线程循环输出ABCABCABC....
- 停止线程的三个方法
- 三个线程循环打印ABC。。。。
- 三个线程交替打印ABC
- 三个线程顺序打印ABC
- 三个线程依次顺序执行
- move_uploaded_file 无返回值 一直失败
- 修改jetty服务器端口号
- LeetCode #Valid Palindrome#
- 实现ListView中item中Button和Item本身点击都有响应
- 陈正冲老师讲c语言之内存的申请malloc() 和释放free()
- windows,三个线程(+ ,- ,*);WaiForSingleObject;
- iOS设备分辨率、尺寸、图标大小等
- 时间管理总结
- Android动画开发——Animation动画效果详解
- 【新浪微博项目】06--自定义BadgeButton
- js中this的总结
- Spring Security 3 基于角色访问控制过程详解
- Zend Framework 1.x+jQuery EasyUI 1.3.4 整合二:构建项目
- __declspec(dllexport)、__declspec(dllimport)、__attribute__((visibility("default")))