我遇到問題以從線程訪問包變量。這是一個大項目,所以我會嘗試提取代碼的相關部分。從線程訪問包變量
我正在使用線程模塊和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');
我在想,宣佈$線程2與our
使其成爲全包可見。
對發生了什麼有什麼想法?
我現在可以看到我的問題是愚蠢的......感謝亮點! – Titi