温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Perl线程怎么消亡

发布时间:2021-12-06 10:40:39 来源:亿速云 阅读:134 作者:小新 栏目:开发技术

这篇文章主要介绍了Perl线程怎么消亡,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Perl线程的消亡

大多数情况下,你希望你创建的Perl线程正常退出,这就意味着Perl线程所对应的函数体在执行完毕后返回并释放资源。例如在清单5的示例中,新建Perl线程被join以后的退出过程。可是,如果由于detach不当或者由于主线因某些意外的异常提前结束了,尽管它所创建的Perl线程可能尚未执行完毕,但是他们还是会被强制中止,正所谓皮之不存,毛将焉附。这时你也许会得到一个类似于“Perlexitedwithactivethreads”的警告。

当然,你也可以显示地调用exit()方法来结束一个Perl线程,不过值得注意的是,默认情况下,如果你在一个Perl线程中调用了exit()方法,其他Perl线程都会随之一起结束,在很多情况下,这也许不是你想要的,如果你希望exit()方法只在调用它的Perl线程内生效,那么你在创建该Perl线程的时候就需要设置’exit’=>’thread_only’。例如

清单7.为某个Perl线程设置’exit’=>’thread_only’属性

#!/usr/bin/perl  #  usethreads;   subsay_hello{  printf("Hellothread!@_.\n");  sleep(10);  printf("Bye\n");  }   subquick_exit{  printf("Iwillbeexitinnotime\n");  exit(1);  }   my$t1=threads->create(\&say_hello,"param1","param2");  my$t2=threads->create({'exit'=>'thread_only'},\&quick_exit);   $t1->join();  $t2->join();

如果你希望每个Perl线程的exit方法都只对自己有效,那么在每次创建一个新Perl线程的时候都去要显式设置’exit’=>’thread_only’属性显然有些麻烦,你也可以在引入threads包的时候设置这个属性在全局范围内有效,例如

清单8.设置’exit’=>’thread_only’为全局属性

usethreads('exit'=>'threads_only');   subfunc{  ...  if($condition){  exit(1);  }  }   my$t1=threads->create(\&func);  my$t2=threads->create(\&func);   $t1->join();  $t2->join();

感谢你能够认真阅读完这篇文章,希望小编分享的“Perl线程怎么消亡”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI