# Adds fields to a shared object
sub set {
my ($self, $tag, $value) = @_;
lock($self);
$self->{$tag} = shared_clone($value);
}
####
# Adds sub fields to a shared object
sub set_alwd_info {
my ($self, $tag, $value) = @_;
lock($self);
43: $self->{ALWD_INFO}{$tag} = shared_clone($value);
}
####
#!/usr/bin/perl
#
package ALWD::Cows;
use strict;
use warnings;
use threads;
use threads::shared qw(share is_shared shared_clone);
# Constructor
sub new {
my $class = shift;
share(my %self);
# $self{ALWD_INFO} = {};
# ... ... ...
my $self = bless(\%self, $class);
return $self;
}
# Adds fields to a shared object
sub set {
my ($self, $tag, $value) = @_;
lock($self);
$self->{$tag} = shared_clone($value);
}
# Adds sub fields to a shared object
sub set_alwd_info {
my ($self, $tag, $value) = @_;
lock($self);
$self->{ALWD_INFO}{$tag} = shared_clone($value);
}
package main;
my $sample = ALWD::Cows->new();
$sample->set("Key1", "Value1");
$sample->set_alwd_info("Key2", "Value2");