2017-01-30 11 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. Причинение выполнения программы для остановки и возврата управления ОС для обработки события. Программа может быть прекращена, все ресурсы, освобожденные в зависимости от ОС.