如何通过线程在C中打破简单的无限循环

时间:2015-02-05 09:58:54

标签: c multithreading

我正在寻找解决方案如何在线程完成时打破无限循环。代码很复杂,所以我只展示你的主要部分。 看下面

 for(;;){     if(stan==false)
              pthread_create(&counter, NULL, count_me, NULL);     
              //to create thread only once in loop

              stan=true;

                  move=getchar();
                  //(...) action.... doesn't matter     
         }

如您所见,main正在等待用户在getchar()函数中移动。我想在创建一个帖子10秒后打破这个循环。

线程def下面

        void *count_me(void *threadid)
        {
           sleep(10);

           pthread_exit(NULL);

         }

thx求助

2 个答案:

答案 0 :(得分:0)

一种简单的方法是添加一个由线程退出时设置的标志,然后主线程可以检查这个标志并调用pthread_join并跳出循环。

答案 1 :(得分:0)

 for(;;) 
     {   
          if(breakloop != 0)
          {
          if(stan==false) 
          pthread_create(&counter, NULL, count_me, NULL);     
          //to create thread only once in loop

          stan=true;

              move=getchar();
              //(...) action.... doesn't matter
          }
          else
          { 
              break; 
          } 
     }

这应该有效。如果要打破循环,请将breakloop更改为1或其他内容。在您的情况下,例如创建一个计时器。