NAME
Test::SharedObject - Data sharing in multi process.
SYNOPSIS
use strict;
use warnings;
use Test::More tests => 2;
use Test::SharedFork;
use Test::SharedObject;
my $shared = Test::SharedObject->new(0);
is $shared->get, 0;
my $pid = fork;
die $! unless defined $pid;
if ($pid == 0) {# child
$shared->txn(sub {
my $counter = shift;
$counter++;
return $counter;
});
exit;
}
wait;
is $shared->get, 1;
DESCRIPTION
Test::SharedObject provides atomic data operation between multiple process.
METHODS
-
Creates a new Test::SharedObject instance. And set
$value
as initial value.Internally, Creates temporary file, and serialize
$value
by Storable, and save. -
Provides atomic data operation between multiple process in
\&coderef
. Set shared value as first arguments in\&coderef
, and return value as new shared value.Internally:
Good Example:
$shared->txn(sub { my $counter = shift; $counter++; # atomic!! return $counter; });
Bad Example:
my $counter; $shared->txn(sub { $counter = shift; }); $counter++; # *NOT* atomic!! $shared->txn(sub { return $counter; });
-
Set
$value
as shared value. The syntactic sugar for$shared->txn()
. -
Get shared value. The syntactic sugar for
$shared->txn()
.
LICENSE
Copyright (C) karupanerura.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHOR
karupanerura <karupa@cpan.org>