2011-10-18 49 views
1

我有一個多線程程序,並且在下面的代碼中,當y的值變得小於0時,我需要所有線程停止運行。退出多線程程序中的所有線程

這裏的源代碼 -

 else if(y<0) 
    { 
      flag=1; 
      printf("Exit the program\n"); 
      pthread_exit((void *)55); 
      printf("sdjfajdflsdj"); 

      // return NULL; 
    } 

正在發生的事情是該程序打印線 - 退出程序,但卡在那裏。它不會去printf(「sdjfajdflsdj」);也不會退出代碼。

有人可以幫忙嗎?

感謝

回答

3

pthread_exit退出當前線程,而不是別人。我相信exit應該退出所有線程。

1

一個問題是你退出線程的方式。

pthread_exit((void *)55); 

不傳遞指向值55的指針,它傳遞一個指向內存中的55的指針,該指針不可能是可讀地址。試試:

int val = 55; 
pthread_exit((void *)&val);