2017-01-30 10 views
1

自分のプログラムでバグが発生したため、プロセス全体が終了し、私のプログラムでデバッグしたあと、Task Managerのスレッドが実行中にプロセスが終了することがありました。スレッドによって行われたアクションは、他のスレッドとプロセス全体を終了させますか?

私はこのスレッドを踏んで、明らかに問題の原因となったexit()を使用しました。 pthread_exit()に変更しましたが、同じ問題が発生しましたが、特定のスレッドにも不正な操作があったことが判明しました:division by zero

  • pthread_exit
  • のpthread_cancel
  • 終了
  • 違法行為

は、それらのプロセスが終了しますメインスレッドの戻り?

答えて

1
|      | thread | process      | 
----------------------------------------------------------------- 
| pthread_exit  | finish | finish iff last running thread | 
| pthread_cancel  | finish | finish iff last running thread | 
| exit()    | finish | finish       | 
| Illegal operation | finish | finish       | 
| thread finishes  | finish | finish iff last running thread | 
| main thread finishes| finish | finish       | 

return全体のスレッドが同様に終了している理由です、exitsys_callが含まれているラッパー関数です。

CPUsはNULLポインタデリファレンスをゼロ、またはにより分裂のようなものに 、例外割り込みをスローする傾向があります。プログラムの実行を停止させ、イベントを処理するための制御をOSに戻す。プログラムによっては、OSによっては すべてのリソースが解放される可能性があります。

関連する問題