Provided by: libtest-sharedobject-perl_0.01-3_all
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
my $shared = Test::SharedObject->new($value) Creates a new Test::SharedObject instance. And set $value as initial value. Internally, Creates temporary file, and serialize $value by Storable, and save. $shared->txn(\&coderef) 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: Lock temporary file. Read shared value. Executes "\&coderef". (Set shared value as first arguments) Write return value as shared value. Unlock temporary file. 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; }); $shared->set($value) Set $value as shared value. The syntactic sugar for "$shared->txn()". my $value = $shared->get() 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>