Multithreading 如何使用threads::shared声明共享属性?
使用,可以声明如下所示的共享变量:Multithreading 如何使用threads::shared声明共享属性?,multithreading,perl,moose,Multithreading,Perl,Moose,使用,可以声明如下所示的共享变量: my $n_lines_waiting: shared = 0; 使用Moose,属性通过“has”声明: has 'p_queue' => (is => 'ro', isa => 'Thread::Queue', default => sub{ return Thread::Queue->new(); }); 有没有办法将threads::shared和Moose结合起来?我想使用Moose的漂亮语法来声明一个可以在线程之间
my $n_lines_waiting: shared = 0;
使用Moose,属性通过“has”声明:
has 'p_queue' => (is => 'ro', isa => 'Thread::Queue', default => sub{ return Thread::Queue->new(); });
有没有办法将threads::shared和Moose结合起来?我想使用Moose的漂亮语法来声明一个可以在线程之间共享的属性。它应该像更改默认值一样简单,以包含相同的语法:
'default' => sub {
my $queue :shared = Thread::Queue->new();
return $queue
},
你好!不幸的是,这没有起作用。使用上述方法声明属性会导致每个线程的值不同。似乎作为moose属性访问变量的行为就好像它没有被共享一样。@capfan我试过了,它对我有效。使用此对象的代码看起来像什么?当然,给您: