我该如何在Perl中实现线程间对象共享?

3

我已经搜索了相关主题,但仍然无法解决这个问题...

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个回答

4
你有没有看过Perl扩展threads::shared?这个扩展可以在线程之间共享数据结构。默认情况下,变量对每个线程是私有的,每个新创建的线程都会得到现有变量的一个私有副本。但这个模块允许你在不同的线程(以及Win32上的伪forks)之间共享变量。此模块仅支持以下数据类型的共享:标量和标量引用、数组和数组引用以及哈希和哈希引用。

1
谢谢您的帮助:) 不过,threads::shared能否使一个(动态更改的)对象在线程之间共享? - bluesea007

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接