gpt4 book ai didi

multithreading - Perl 线程::共享嵌套数据结构

转载 作者:行者123 更新时间:2023-12-04 08:26:09 25 4
gpt4 key购买 nike

# thread::shared only allws a single level of shared structure
# needs a explicit hash creation for nested data structures
my %counts : shared = ();

foreach my $state (%known_states) {
# COUNTS
unless (exists $counts{build}) {
my %cb : shared;
$counts{build} = \%cb;
}
$counts{build}{$state} = 0;

}

现在,我必须做类似上面的事情,我必须为每个子级散列显式创建一个散列引用。

有更好的方法吗?

附言如果我不创建哈希引用,那么我会收到“共享标量的无效值”错误,因为我试图将它用作哈希。

最佳答案

自动激活使

$counts{build}{$state} = 0;

表现得像
( $counts{build} //= {} )->{$state} = 0;

为了可读性,让我们把它分成两行
$counts{build} //= {};
$counts{build}{$state} = 0;

但就像你说的,我们需要一个共享的哈希。
$counts{build} //= &share({});
$counts{build}{$state} = 0;

您可以添加以下内容以确保不会意外激活非共享变量:
no autovivification qw( fetch store exists delete );

关于multithreading - Perl 线程::共享嵌套数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28567872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com