如何在Perl中的线程之间共享对象?

时间:2009-11-10 08:03:32

标签: perl multithreading

我搜索过相关主题,但仍然无法解决问题...

use threads;
my $person = new Person( 'Name' => "yy");

my $udp_thread = threads->new(\&udp_func);

while(1)
{
    $person->working();
}

sub udp_func 
{
    #Can't call method "setName" on an undefined value:
    $person->setName();             
}

如何在新主题中访问对象$ person?非常感谢!!

1 个答案:

答案 0 :(得分:4)

您是否看过threads::shared Perl扩展程序?

  

threads :: shared - 用于在线程之间共享数据结构的Perl扩展。默认情况下,变量对每个线程都是私有的,每个新创建的线程都会获得每个现有变量的私有副本。此模块允许您跨不同的线程(和Win32上的伪叉)共享变量。它与线程模块一起使用。此模块仅支持共享以下数据类型:标量和标量引用,数组和数组引用,以及散列和散列引用。