2015-02-05 3 views
-1

스레드가 끝날 때 무한 루프를 휴식하는 방법을 솔루션을 찾고 있어요. 코드가 복잡하기 때문에 주요 부분 만 표시합니다. 스레드에 의해 C에서 무한 루프에 대한 간단한 휴식 방법

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  
     } 

보시다시피

아래 이봐, 메인은 getchar가() FUNC에서 사용자 이동을 기다리고 있습니다. 스레드를 생성 한 후 10 초 후에이 루프를 중단하고 싶습니다. 당신의 도움이

+0

무한 루프를 끊을 수 없습니다. 깨지면 무한하지 않습니다. 어쨌든 전역 변수 인'volatile int endLoop = 0;'을 사용하고 다른 스레드에서 1로 설정하십시오. 루프에서 매번 확인하십시오. – sashoalm

+0

실제로 getchar을 취소하고 싶다고 생각합니다. 내가 올바르게 이해했다면이 접근법이 도움이 될 것입니다. http://stackoverflow.com/questions/11513593/cancelling-getchar – alediaferia

답변

0

간단한 방법에 대한

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

      pthread_exit(NULL); 

     } 

들으 아래

스레드 데프는 종료 할 때, 메인 스레드가 다음이 플래그와 전화를 확인할 수 있습니다 스레드에 의해 설정되는 플래그를 추가하는 것입니다 pthread_join이고 루프에서 벗어납니다.

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; 
      } 
    } 

이렇게하면됩니다. 루프를 중단하려면 브레이크 루프를 1 또는 다른 것으로 변경하십시오. 귀하의 경우 예를 들어 타이머를 만드십시오.

관련 문제