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 |