以下脚本在perl 5.16中崩溃。在线程中使用glob()
有什么问题吗?
use strict;
use warnings;
use 5.010;
use threads;
sub f {
my $no = shift;
my @arr = glob("*");
say "thread $no: ", scalar(@arr);
}
foreach my $tno (1..5) {
my $thr = threads->create(\&f, $tno);
$thr->join();
}
它打印
thread 1: 33
然后由于段错误(MacOS)或访问冲突(Windows 7)而崩溃。
经过
v5.16.2 on Mac OSX (darwin-thread-multi-2level)
和ActivePerl on Windows 7 64bit (v5.16.3 built for MSWin32-x86-multi-thread)
测试。
最佳答案
这是bug in perl,我在fixed中一直是5.18.2。
关于multithreading - Perl崩溃: Wrong use of glob in threads?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23629632/