加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 哈希的共享Hashref可能吗?

发布时间:2020-12-16 06:16:41 所属栏目:大数据 来源:网络整理
导读:我试图使用哈希的hashref存储持久字段和更改该字段的时间戳. 它需要共享,因为我有2个线程需要访问它,虽然只有一个设置值. 这是我当前的代码,其中包含几个注释掉的变体: my $status = {};share($status);sub get_status { my($raid) = @_; return $status-{$
我试图使用哈希的hashref存储持久字段和更改该字段的时间戳.

它需要共享,因为我有2个线程需要访问它,虽然只有一个设置值.

这是我当前的代码,其中包含几个注释掉的变体:

my $status = {};
share($status);
sub get_status {
    my($raid) = @_;
    return $status->{$raid}->{status} if exists $status->{$raid};
    return 1;
}
sub set_status {
    my($raid,$newstatus) = @_;
    my %t;
    $t{status} = $newstatus;
    $t{timestamp} = Time::HiRes::time;
    $status->{$raid} = %t;
    #$status->{$raid} = {
        #status => $newstatus,#timestamp => Time::HiRes::time()
    #};
    #$status->{$raid}->{status}=$newstatus;
    #$status->{$raid}->{timestamp} = Time::HiRes::time;
    return 1;
}
set_status('680','1');
get_status('680');

我不断在./hashtest第19行获得共享标量的无效值.

有人可以帮忙吗:D?

解决方法

This perlmonks page应该解释这个问题.其中一篇帖子声称:

You can share nested hash,as long as the internal hashes are also marked as shared.

你可以尝试这样的事情:

share( %t );
$status->{ $raid } = %t;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读