我在从线程访问包变量时遇到问题。这是一个大项目,所以我将尝试提取代码的相关部分。
我将线程模块和Moose用于 OO 部分。
our $thread2;
around 'new' => sub {
[...]
threads->create( \&_thread1Func, $shared_self );
if (!$thread2) {
$thread2 = threads->create( \&_thread2Func, $shared_self );
$thread2->detach();
}
}
sub _thread1Func {
$thread2->kill('SIGUSR1');
}
sub _thread2Func {
$SIG{'USR1'} = sub { [...] };
while (1) {
sleep 5;
[...]
}
}
我收到以下错误:
Thread N terminated abnormally: Can't call method "kill" on an undefined value at XXXX.pm line n.
指向n
线$thread2->kill('SIGUSR1');
我在想用 $thread2 声明our
它可以从整个包中看到。
知道发生了什么吗?