Thread::SharedTreeSet - Shared set of recursive hashes/arrays using serialization
0.01
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); } }
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.
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.
To install Thread::SharedTreeSet, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Thread::SharedTreeSet
CPAN shell
perl -MCPAN -e shell install Thread::SharedTreeSet
For more information on module installation, please visit the detailed CPAN module installation guide.