当前位置:   article > 正文

Linux环境下,C++实现龟兔赛跑的多线程编程_vc++龟兔赛跑程序代码

vc++龟兔赛跑程序代码

编程 使⽤ Thread 实现多线程编程

题目:龟兔赛跑,跑道距离50米。乌龟(作为⼀个线程) 每秒3米,不睡觉 ;

兔子(作为⼀个线程)每秒5米,每跑15⽶睡2秒钟。请模拟比赛情况。

  1. #include<iostream>
  2. #include<unistd.h>
  3. #include<pthread.h>
  4. using namespace std;
  5. //龟兔赛跑:跑道长度50m,实现乌龟和兔子两个多进程程序,模拟比赛情况
  6. //乌龟线程(每秒3m,不休息)
  7. void* thread1(void* args){
  8. int len1; //乌龟跑的路程
  9. for(int i=1; ;i++){ //i表示秒数
  10. len1 = 3*i;
  11. cout<<"乌龟第"<<i<<"s,跑到了"<<len1<<"m处"<<endl;
  12. if(len1>=50) //不准确(没精准到更小单位、这个题无所谓)
  13. {
  14. cout<<"乌龟第"<<i<<"s跑到了终点"<<endl;
  15. break;
  16. }
  17. }
  18. return 0;
  19. }
  20. int main(){
  21. pthread_t id; //创造的线程id
  22. int len2=0; //兔子跑的路程
  23. //兔子线程作为主线程(每秒5m,每跑15m休息2秒)
  24. for(int i=1; ;i++){ //i表示秒数
  25. len2 += 5;
  26. cout<<"兔子第"<<i<<"s,跑到了"<<len2<<"m处"<<endl;
  27. if(len2%15==0){
  28. sleep(2);
  29. cout<<"兔子休息了两秒"<<endl;
  30. i+=2;
  31. }
  32. if(len2>=50){
  33. cout<<"兔子第"<<i<<"s跑到了终点"<<endl;
  34. break;
  35. }
  36. }
  37. int ret1 = pthread_create(&id, NULL, thread1, NULL);
  38. if(ret1) //ret的返回值不为0(ret!=0)
  39. {
  40. cout << "Create pthread error!" << endl;
  41. return 1;
  42. }
  43. pthread_join(id,NULL); //等待所有线程运行完毕
  44. //pthread_exit(NULL);
  45. }

如果你在CLion的编译环境下,使用'pthread_create'、'pthread_join'函数等会出现“ undefined reference to 'pthread_create' ”的报错!!!

解决方法:在CMakeLists.txt中添加下列语句:

  1. // 如果是C++(cpp文件):
  2. SET(CMAKE_CXX_FLAGS -pthread)
  3. // 如果是C语言(.c文件):
  4. SET(CMAKE_C_FLAGS -pthread)

实际操作,举例如下图

 

 

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

闽ICP备14008679号