Provided by: libtest-sharedobject-perl_0.01-3_all bug

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>