Re: [cpp] 线程crash而进程没有crash

sunpluto sunpluto2004 at yahoo.com.cn
Wed Nov 28 13:09:22 CST 2007


理论上,进程只是一个概念,或者说是一个上下文
   
  当进程开始时,是进程的主线程开始运行,当主线程崩溃时,进程便被系统
   
  回收了,而主线程外的其他线程若崩溃的话,因该是不会影响进程(主线程)的
   
  不过我没有进行过测试,只是泛泛之说,欢迎一起讨论

Alized <bluecjq at gmail.com> 写道:
    我程序中有个地方使用了一个0指针,没有用结构化的try-catch来捕获异常,然后在客户运行环境中发现这个线程挂了(不见了),其他线程正常运行,使用同一个build来我们自己的测试环境中也是这样。但当我重新编译后,再测试时就发现是整个进程crash了,而不是单个线程crash.跟踪源程序,发现在类的成员变量中会调用类的成员变量,因此,如果是个空指针的话,在这个成员函数中使用非静态成员变量,又没有try-catch,理论上应该是整个进程crash。 问题在于:为什么前一次是只挂一个线程,而后一次是整个进程。两者的不同在于,一个是build machine编译的,而后一次是我自己机子编译的,不知道是不是编译器可以设置? 
  

 
  在07-11-26,Louis <hlouis at gmail.com> 写道:   好吧,这样说也有道理,如果你不做任何事情就访问一个空指针或是除以0之类的,我相信没有什么办法让你的程序不崩溃。   

  On Nov 26, 2007 1:09 PM, lijie <cpunion at gmail.com> wrote:
  异常都捕获了还算是crash吗?     
  

  On Nov 26, 2007 11:48 AM, Louis <hlouis at gmail.com> wrote:
  一般来说,你需要用try catch捕获这个线程的exception,然后不予处理,基本上可以保证这个线程的crash不会影响整个进程。

不过在程序退出之前,这个线程所占用的资源也不能释放了。。。。 

  On Nov 26, 2007 11:40 AM, Alized < bluecjq at gmail.com > wrote:
  请教:在什么样的情况下,线程crash而进程不会crash?跟系统的设置有关么? 
_______________________________________________
Cpp mailing list
Cpp at codingnow.com
http://codingnow.com/mailman/listinfo/cpp 





-- 
Louis Huang 
_______________________________________________
Cpp mailing list
Cpp at codingnow.com
http://codingnow.com/mailman/listinfo/cpp 



 


_______________________________________________
Cpp mailing list
Cpp at codingnow.com
http://codingnow.com/mailman/listinfo/cpp 





-- 
Louis Huang 

_______________________________________________
Cpp mailing list
Cpp at codingnow.com
http://codingnow.com/mailman/listinfo/cpp



_______________________________________________
Cpp mailing list
Cpp at codingnow.com
http://codingnow.com/mailman/listinfo/cpp



致
礼
       
---------------------------------
雅虎邮箱,终生伙伴! 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://codingnow.com/pipermail/cpp/attachments/20071128/2c63816a/attachment.html


More information about the Cpp mailing list