当前位置:   article > 正文

三个线程实现ABC的顺序输出_输出线程次序

输出线程次序

要求

创建3个线程,让这三个线程按顺序执行,每个线程打印一个字母,eg:执行后的结果是ABC ABC......共执行10次

可以给出多种方法,本文给出其中一种方法为:在线程中创建线程

先创建一个线程用来输出A,并在第一个线程中创建第二个线程,用第二个线程输出B,并在第二个线程中创建第三个线程,用第三个线程输出C。

程序

  1. #include<pthread.h>
  2. #include<stdio.h>
  3. #include<unistd.h>
  4. void* myFun1_A(void* arg);
  5. void* myFun1_B(void* arg);
  6. void* myFun1_C(void* arg);
  7. int main(int argc, char const *argv[])
  8. {
  9. pthread_t tid1;
  10. pthread_create(&tid1,NULL,myFun1_A,"A");
  11. pthread_join(tid1,NULL);
  12. //while(1);
  13. return 0;
  14. }
  15. void* myFun1_A(void* arg)
  16. {
  17. while(1)
  18. {
  19. char* str=(char*)arg;
  20. pthread_t tid2;
  21. pthread_create(&tid2,NULL,myFun1_B,"B");
  22. pthread_detach(tid2);
  23. fflush(stdout);
  24. printf("%s",str);
  25. //printf("\n");
  26. sleep(1);
  27. }
  28. return arg;
  29. }
  30. void* myFun1_B(void* arg)
  31. {
  32. char* str=(char*)arg;
  33. pthread_t tid3;
  34. pthread_create(&tid3,NULL,myFun1_C,"C");
  35. pthread_detach(tid3);
  36. fflush(stdout);
  37. printf("%s",str);
  38. //printf("\n");
  39. sleep(1);
  40. return 0;
  41. }
  42. void* myFun1_C(void* arg)
  43. {
  44. char* str=(char*)arg;
  45. fflush(stdout);
  46. printf("%s\t",str);
  47. printf("\n");
  48. sleep(1);
  49. return 0;
  50. }

输出

代码为循环输出哟! 可以自行加以更改。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/197888
推荐阅读
相关标签
  

闽ICP备14008679号