2011-10-18 3 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")行には行かない。どちらもコードを終了しません。

誰かが助けてくれますか?現在のスレッドではなく、他人を終了pthread_exit

おかげ

答えて

3

exitはすべてのスレッドを終了する必要があります。

1

1つの問題は、スレッドを終了する方法です。

pthread_exit((void *)55); 

値55へのポインタを通過しない、それが読み取り可能なアドレスである可能性が高いされていない、メモリ55を参照するポインタを渡します。試してください:

int val = 55; 
pthread_exit((void *)&val); 
関連する問題