c++实现子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次
2017-09-05 14:54
435 查看
准确的说这是在别人代码上修改的,虽说这种实现方法可以实现题意。但是总感觉还有更好的方法,如果读者有更好的方法欢迎留言,如果读完本文有所收获也可以留言,大家一起分享。
原博客地址:http://blog.csdn.net/morewindows/article/details/7392749#cpp
#include <stdio.h> #include <process.h> #include <windows.h> HANDLE g_hThreadEvent1; HANDLE g_hThreadEvent2; int g_nMainLoopNum = 0; int g_nSubLoopNum = 0; #define LOOPNUM 50 #define MAINLOOPNUM 100 #define SUBLOOPNUM 10 unsigned int __stdcall subThreadFun(void* pData) { while (1) //子线程要一直监听信号量? { WaitForSingleObject(g_hThreadEvent2, INFINITE); //等待事件2的信号量,期间不往下执行 P(event2) g_nSubLoopNum++; //子线程执行次数 for (int i = 1; i <= SUBLOOPNUM; i++) { printf("子线程编号是 %d ,在循环第 %d 次\n", GetCurrentThreadId(), i); } printf("************子线程正在执行第%d次**************\n\n", g_nSubLoopNum); ReleaseSemaphore(g_hThreadEvent1, 1, NULL); //设置事件1的信号量,相当于执行主线程 v(event1) Sleep(100); } return 0; } int main() { g_hThreadEvent1 = CreateSemaphore(NULL, 0, 1, NULL); g_hThreadEvent2 = CreateSemaphore(NULL, 1, 1, NULL); _beginthreadex(NULL, 0, subThreadFun, NULL, 0, NULL); //创建子线程 //相当于main为主线程 for (int i = 1; i <= LOOPNUM; ++i) { WaitForSingleObject(g_hThreadEvent1, INFINITE); //一直等待线程事件1的信号量 p(event1) g_nMainLoopNum++; //主线程执行次数 for (int num = 1; num <= MAINLOOPNUM; num++) { printf("主线程编号是 %d ,在循环第 %d 次\n", GetCurrentThreadId(), num ); } printf("************主线程正在执行第%d次**************\n\n", g_nMainLoopNum); Sleep(100); if (i != LOOPNUM) { ReleaseSemaphore(g_hThreadEvent2, 1, NULL); //给事件2设置信号量,就是让子线程执行 v(event2) } else break; } CloseHandle(g_hThreadEvent1); CloseHandle(g_hThreadEvent2); return 0; }
原博客地址:http://blog.csdn.net/morewindows/article/details/7392749#cpp
相关文章推荐
- 子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。
- (某培训机构的练习题)子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。
- 子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。
- 多线程学习--案例-子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次
- 子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次
- 面试题:子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次
- 【Java面试题】30 子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。
- 子线程循环 10 次,接着主线程循环 100,接着又回到子线程循环 10 次, 接着再回到主线程又循环 100,如此循环 50 次
- 子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序
- Java多线程面试题:子线程循环10次,接着主线程循环100,接着又回到子线程循环10次, 接着再回到主线程又循环100,如此循环50次
- 子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次.
- 多线程面试题:子线程循环10次,接着主线程循环100次;接着回到子线程循环10次,然后再回到主线程循环100次,如此交替50次。
- 子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环10 次(线程面试:windows下实现)
- 子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程100次,如此循环50次
- 子线程循环 3 次,接着主线程循环 6 次,接着又回到子线程循环 3 次,接着再回到主线程又循环6 次,如此循环50次。
- 面试题:子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程循环100次,如此循环50次,请写出程序
- 子线程循环 3 次,接着主线程循环 6 次,接着又回到子线程循环 3 次,接着再回到主线程又循环6 次,如此循环50次,试写出代码。
- 子线程循环 3 次,接着主线程循环 6 次,接着又回到子线程循环 3 次,接着再回到主线程又循环6 次,如此循环50次,试写出代码。
- (13)多线程与并发库之java5阻塞队列(BlockingQueue)的应用----子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程循环100次,如此循环50次
- 子线程循环10次,接着主线程循环100,接着又回到子线程循环10次.....如此循环50次