带警报的 Perl 线程
有没有办法让警报(或其他超时机制)在 perl (>=5.012) 线程中工作?
Is there any way to get alarm (or some other timeout mechanism) working in perl (>=5.012) threads?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在主线程中运行
alarm
,并使用信号处理程序向活动线程发出信号。如果您需要为每个线程设置不同的警报,请查看允许您设置多个警报的模块,例如
Alarm::Concurrent
。编辑:评论者指出
threads::join
会干扰SIGALRM
,因此您可能需要测试$thr->is_joinable
而不是调用 <代码>$thr->加入Run
alarm
in your main thread, with a signal handler that signals your active threads.If you need different alarms for each thread, look into a module that allows you to set multiple alarms like
Alarm::Concurrent
.Edit: commentors point out
threads::join
interferes withSIGALRM
, so you may need to test$thr->is_joinable
rather than calling$thr->join