The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.