Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 如何使用threads::shared声明共享属性?_Multithreading_Perl_Moose - Fatal编程技术网

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我试过了,它对我有效。使用此对象的代码看起来像什么?当然,给您: