NAME
Thread::SharedTreeSet - Shared set of recursive hashes/arrays using serialization
VERSION
0.01
SYNOPSIS
use threads;
use Thread::SharedTree;
use Data::Dumper;
my $h = Thread::SharedTree->new();
threads->create( 'a', $h->{'id'} );
threads->create( 'b', $h->{'id'} );
wait_for_threads();
sub a {
    my $hid = shift;
    my $h = Thread::SharedTree->new( id => $hid );
    $h->set( 'a', { test => 'blah' } );
    $h->ilock('a');
    sleep(4);
    $h->iunlock('a');
}
sub b {
    my $hid = shift;
    my $h = Thread::SharedTree->new( id => $hid );
    sleep(1);
    $h->ilock('a');
    my $data = $h->get('a');
    $h->iunlock('a');
    print Dumper( $data );
}
sub wait_for_threads {
    while( 1 ) {
        my @joinable = threads->list(0);#joinable
        my @running = threads->list(1);#running
        
        for my $thr ( @joinable ) { $thr->join(); }
        last if( !@running );
        sleep(1);
    }
}
DESCRIPTION
Thread::SharedTreeSet makes it possible to share a set of recursive hashes/arrays between threads. Each shared tree set created has a unique scalar identifier that can be used to fetch that same shared tree set from another thread.
LICENSE
Copyright (C) 2013 David Helkowski
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.  You may also can
redistribute it and/or modify it under the terms of the Perl
Artistic License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.