| Test::SharedObject(3pm) | User Contributed Perl Documentation | Test::SharedObject(3pm) |
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:
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>
| 2022-10-13 | perl v5.34.0 |