【发布时间】:2012-08-12 02:14:02
【问题描述】:
我使用 Perl TK 和 Threads 编写了一个 GUI。在程序退出之前,一切都运行良好。这时我得到一个分段错误。我相信我正在尽我所能地管理我的线程,并且分段错误仅仅是由于 Perl 版本 5.8.8 中的线程。我知道这个版本很老了,但是因为工作不能更新。所以,我的问题是,我可以以某种方式简单地隐藏分段错误吗?或者,有没有一种万无一失的方法来彻底清理线程?由于问题的性质,我认为我的代码不相关,但这是我结束线程的方式:
my $thr = threads->create(\&worker); ##this is created before any TK objects
sub worker {
while($run){
##do thready-stuff here
}
}
sub OnExit {
$run=0;
exit 0;
}
其中 $run 是一个共享变量,&OnExit 绑定到正在关闭的窗口。如果我删除 $run=0 ,我会收到一个关于退出程序并运行额外线程的错误,所以我很确定这会结束它。同样,我相信我的错误是由于版本限制,所以我只想隐藏它。谢谢!
【问题讨论】:
-
你是如何关闭 Perl/TK 的?你是在做 $mainwin->destroy 还是直接退出?
-
我只是在使用退出。 $mainwin->destroy 会帮忙吗?在此期间我会调查一下。
-
我有这个问题,但它似乎只发生在 Windows 7 和现在的 Window XP 上。我们使用的是同一个古老的 perl 5.8.8。和 PerltK。
标签: multithreading perl segmentation-fault tk