Coro::LocalScalar - local() for Coro
Perl local() function unuseful for Coro threads. This module uses tie magick to make scalar local for each Coro thread. Unlike Coro::Specific this module destroys all data attached to coroutine when coroutine gets destroyed. It's useful when you need to call destructors of coroutine local objects when coroutine destroyed. And you can easily localize value of hash with this module. It has an overhead of calling one callback per localized variable when coroutine is destroyed.
use Coro; use Coro::LocalScalar; use Coro::EV; my $scalar; Coro::LocalScalar->new->localize($scalar); async { $scalar = "thread 1"; print "1 - $scalar\n"; cede; print "3 - $scalar\n"; cede; print "5 - $scalar\n"; }; async { $scalar = "thread 2"; print "2 - $scalar\n"; cede; print "4 - $scalar\n"; cede; print "6 - $scalar\n"; }; EV::loop;
prints 1 - thread 1 2 - thread 2 3 - thread 1 4 - thread 2 5 - thread 1 6 - thread 2
my $obj = Coro::LocalScalar->new; # no tie magick used $obj->value("data"); $obj->value = "data"; my $value = $obj->value; #or my $local_lvalue_closure = $obj->closure; # lvalue coderef $local_lvalue_closure->() = "local data"; # no tie magick used my $testobj = Someclass->new; # attach setter/getter and tied hash element to your object $obj->attach($testobj, 'element_local_in_coros'); $testobj->element_local_in_coros("data"); $testobj->element_local_in_coros = "data"; $testobj->{element_local_in_coros}; # tie magick used
To install Coro::LocalScalar, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Coro::LocalScalar
CPAN shell
perl -MCPAN -e shell install Coro::LocalScalar
For more information on module installation, please visit the detailed CPAN module installation guide.