NAME
MCE::Shared - MCE extension for sharing data between workers
VERSION
This document describes MCE::Shared version 1.699_004
SYNOPSIS
# OO construction
use MCE::Shared Sereal => 1;
my $ar = MCE::Shared->array( @list );
my $cv = MCE::Shared->condvar( 0 );
my $fh = MCE::Shared->handle( '>>', \*STDOUT );
my $ha = MCE::Shared->hash( @pairs );
my $oh = MCE::Shared->ordhash( @pairs );
my $qu = MCE::Shared->queue( await => 1, fast => 0 );
my $va = MCE::Shared->scalar( $value );
my $nu = MCE::Shared->sequence( $begin, $end, $step, $fmt );
my $ob = MCE::Shared->share( $blessed_object );
# Tie construction
use MCE::Flow;
use MCE::Shared Sereal => 1;
use feature 'say';
tie my $var, 'MCE::Shared', 'initial value';
tie my @ary, 'MCE::Shared', qw(a list of values);
tie my %has, 'MCE::Shared', (key1 => 'value', key2 => 'value');
tie my $cnt, 'MCE::Shared', 0;
tie my @foo, 'MCE::Shared';
tie my %bar, 'MCE::Shared';
my $m1 = MCE::Mutex->new;
mce_flow {
max_workers => 4
},
sub {
my ($mce) = @_;
my ($pid, $wid) = (MCE->pid, MCE->wid);
## Locking is required when multiple workers update the same element.
## This requires 2 trips to the manager process (fetch and store).
$m1->synchronize( sub {
$cnt += 1;
});
## Locking is not necessary when updating unique elements.
$foo[ $wid - 1 ] = $pid;
$bar{ $pid } = $wid;
return;
};
say "scalar : $cnt";
say " array : $_" for (@foo);
say " hash : $_ => $bar{$_}" for (sort keys %bar);
-- Output
scalar : 4
array : 37847
array : 37848
array : 37849
array : 37850
hash : 37847 => 1
hash : 37848 => 2
hash : 37849 => 3
hash : 37850 => 4
DESCRIPTION
This module provides data sharing for MCE supporting threads and processes. MCE::Shared may run alongside threads::shared.
The documentation below will be completed before the final 1.700 release.
DATA SHARING
- array
- condvar
- handle
- hash
- ordhash
- queue
- scalar
- sequence
- num_sequence
-
num_sequenceis an alias forsequence.
OBJECT SHARING
PDL SHARING
- pdl_byte
- pdl_short
- pdl_ushort
- pdl_long
- pdl_longlong
- pdl_float
- pdl_double
- pdl_ones
- pdl_sequence
- pdl_zeroes
- pdl_indx
- pdl
- ins_inplace
See the MCE Cookbook on github for PDL demonstrations.
COMMON API
- blessed
- destroy
- export
- next
- prev
- reset
SERVER API
- start
- stop
- init
INDEX
AUTHOR
Mario E. Roy, <marioeroy AT gmail DOT com>