+ -
当前位置:首页 → 问答吧 → 子线程调用exit()退出,主线程的END块代码会被执行吗

子线程调用exit()退出,主线程的END块代码会被执行吗

时间:2010-10-11

来源:互联网

本帖最后由 maxxfire 于 2010-10-11 20:22 编辑

刚试了下不行,有点奇怪。。代码加上:
  1. use threads;

  2. sub ThreadFunc() {
  3.     sleep(5);
  4.     exit(1);
  5. }

  6. our $hTh = threads->create( \&ThreadFunc );
  7. $hTh->detach();

  8. END {
  9.     print "88\n";
  10. };

  11. while(1) { sleep(1) };
复制代码

作者: maxxfire   发布时间: 2010-10-11

本帖最后由 zhlong8 于 2010-10-11 21:51 编辑

作者: zhlong8   发布时间: 2010-10-11

回复 maxxfire


    会的,不过你的代码的问题在于,在主线程执行END块之前,会先执行死循环
  1. while(1) { sleep(1) };
复制代码
这个死循环才是不能显示88的原因,如果把死循环去掉,就可以看到正确结果了,呵呵

作者: 珞水的大叔   发布时间: 2010-10-11