线程执行的操作将导致其他线程和整个进程终止?

时间:2017-01-30 13:03:04

标签: operating-system pthreads

我遇到程序中的错误导致整个过程终止,而我通过我的程序调试并按照Task Manager我可以看到我的进程在运行某个线程时终止。

我介绍了这个帖子,显然我使用exit()导致了这个问题。我改为pthread_exit()但我又遇到了同样的问题,结果是特定的线程也有非法操作:division by zero

  • pthread_exit
  • pthread_cancel
  • 出口
  • 非法行动
  • 主线程返回

何时会导致进程终止?

1 个答案:

答案 0 :(得分: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是一个包含exit sys_call的包装函数,这也是整个线程终止的原因。

CPUs倾向于抛出异常中断, 在除以零取消引用空指针之类的事情上。导致程序执行暂停并将控制权返回给操作系统以处理事件。该程序可能会被终止, 根据操作系统释放所有资源。