开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上,要求输出结果必须按ABC的顺序显示:ABCABC

来源:互联网 发布:淘宝助理是做什么的 编辑:程序博客网 时间:2024/04/24 23:46
第四题(迅雷笔试题):编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
#include <stdio.h>   #include <process.h>   #include <windows.h>   #define  g_hThreadEvent(n) g_hThreadEvent##1unsigned int __stdcall Fun(void *pPM);  //线程个数const int THREAD_NUM = 8;  //循环次数const int LOOP = 6;//互斥事件HANDLE g_hThreadEvent[THREAD_NUM];int main(){printf("\t子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环10 次,\n接着再回到主线程又循环 100 次,如此循环50次\n");int i = 0 , j;HANDLE hdl[THREAD_NUM];for (i = 0; i < THREAD_NUM; i++) g_hThreadEvent[i] = CreateEvent(NULL,FALSE,FALSE,NULL);//将线程编号作为线程参数传进去,先转换为指针,再转换为整形,for (i = 0; i < THREAD_NUM; i++) hdl[i] = (HANDLE)_beginthreadex(NULL,0,Fun,(void*)i,0,NULL);SetEvent(g_hThreadEvent[0] );WaitForMultipleObjects(THREAD_NUM,hdl,TRUE,INFINITE);for (i = 0; i < THREAD_NUM; i++){CloseHandle(hdl[i]);CloseHandle(g_hThreadEvent[i]);}return 0;}unsigned int __stdcall Fun(void *pPM){int num = (int)pPM;int i = 0;for( i  = 0 ; i< LOOP;i++){WaitForSingleObject(g_hThreadEvent[num],INFINITE);//printf("  线程ID=%d,线程编号是%c ,%d \n",GetCurrentThreadId(),num+'A');  printf(" %c ",num+'A'); if(num+1 == THREAD_NUM ) printf(" \n");SetEvent(g_hThreadEvent[(num+1)%THREAD_NUM]);}return 0;}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 出月子没奶怎么办 宝宝钙吸收不好怎么办 宝宝吸收不好长不胖怎么办 一岁半宝宝吸收不好怎么办 婴儿看见脏东西怎么办 母乳变质吃了怎么办 六个月婴儿积食怎么办 儿童吸收功能差怎么办 小孩吸收不好长不胖怎么办 宝贝喝水都吐怎么办 小孩子便秘大便硬结怎么办 一岁半宝宝不爱吃饭怎么办 小孩生病不吃饭怎么办 宝宝吃药不肯咽怎么办 宝宝自己不吃饭怎么办 宝宝突然不想吃饭怎么办 孩子死活不吃药怎么办 小孩死活不吃药怎么办 婴儿不吃药怎么办啊 1周岁宝宝厌食怎么办 宝宝吃药会吐怎么办 宝宝上火拉不出大便怎么办 40天宝宝上火怎么办 宝宝8个月结火了怎么办 婴儿喝牛奶上火怎么办 儿童喝牛奶上火怎么办 三岁宝宝不喝奶怎么办 孩子喝牛奶过敏怎么办 小孩哭晕过去怎么办 宝宝断不了奶怎么办 小孩喝牛奶过敏怎么办 宝宝不爱喝牛奶怎么办? 孕妇喝牛奶恶心怎么办 孕妇喝奶粉上火怎么办 宝宝断奶一直哭怎么办 孕妇喝不了牛奶怎么办 断奶时孩子哭闹怎么办 宝宝断奶夜里哭怎么办 小孩断奶晚上哭怎么办 断奶小孩一直哭怎么办 孕妇喝不下鸡蛋怎么办