diff options
author | gregor herrmann <gregoa@debian.org> | 2020-05-12 18:07:03 +0200 |
---|---|---|
committer | gregor herrmann <gregoa@debian.org> | 2020-05-12 18:07:03 +0200 |
commit | a3e9e0bb0df12b7961cf6c2f99bec86f47add67e (patch) | |
tree | 7426f64763f5054fccb35bbdb80f89455ec7f608 /lib/MCE/Mutex/Channel2.pm | |
parent | 3f754067cb0fc74935e05a9769c2fc15ca511708 (diff) |
New upstream version 1.868
Diffstat (limited to 'lib/MCE/Mutex/Channel2.pm')
-rw-r--r-- | lib/MCE/Mutex/Channel2.pm | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/lib/MCE/Mutex/Channel2.pm b/lib/MCE/Mutex/Channel2.pm index 0f51f14..e0c8830 100644 --- a/lib/MCE/Mutex/Channel2.pm +++ b/lib/MCE/Mutex/Channel2.pm @@ -11,7 +11,7 @@ use warnings; no warnings qw( threads recursion uninitialized once ); -our $VERSION = '1.866'; +our $VERSION = '1.868'; use base 'MCE::Mutex::Channel'; use MCE::Util (); @@ -32,7 +32,7 @@ sub new { my ($class, %obj) = (@_, impl => 'Channel2'); $obj{'_init_pid'} = $tid ? $$ .'.'. $tid : $$; - MCE::Util::_sock_pair(\%obj, qw(_r_sock _w_sock)); + MCE::Util::_sock_pair(\%obj, qw(_r_sock _w_sock), undef, 1); syswrite $obj{_r_sock}, '0'; syswrite $obj{_w_sock}, '0'; @@ -47,7 +47,7 @@ sub new { } sub lock2 { - my ($pid, $obj) = ($tid ? $$ .'.'. $tid : $$, @_); + my ($pid, $obj) = ($tid ? $$ .'.'. $tid : $$, shift); MCE::Util::_sysread($obj->{_w_sock}, my($b), 1), $obj->{ $pid.'b' } = 1 unless $obj->{ $pid.'b' }; @@ -59,27 +59,29 @@ sub lock2 { *lock_shared2 = \&lock2; sub unlock2 { - my ($pid, $obj) = ($tid ? $$ .'.'. $tid : $$, @_); + my ($pid, $obj) = ($tid ? $$ .'.'. $tid : $$, shift); - syswrite($obj->{_r_sock}, '0'), $obj->{ $pid.'b' } = 0 + CORE::syswrite($obj->{_r_sock}, '0'), $obj->{ $pid.'b' } = 0 if $obj->{ $pid.'b' }; return; } sub synchronize2 { - my ($pid, $obj, $code, @ret) = ($tid ? $$ .'.'. $tid : $$, shift, shift); + my ($pid, $obj, $code) = ($tid ? $$ .'.'. $tid : $$, shift, shift); + my (@ret, $b); + return unless ref($code) eq 'CODE'; # lock, run, unlock - inlined for performance - MCE::Util::_sysread($obj->{_w_sock}, my($b), 1), $obj->{ $pid.'b' } = 1 + MCE::Util::_sysread($obj->{_w_sock}, $b, 1), $obj->{ $pid.'b' } = 1 unless $obj->{ $pid.'b' }; (defined wantarray) ? @ret = wantarray ? $code->(@_) : scalar $code->(@_) : $code->(@_); - syswrite($obj->{_r_sock}, '0'), $obj->{ $pid.'b' } = 0; + CORE::syswrite($obj->{_r_sock}, '0'), $obj->{ $pid.'b' } = 0; return wantarray ? @ret : $ret[-1]; } @@ -114,7 +116,7 @@ MCE::Mutex::Channel2 - Provides two mutexes using a single channel =head1 VERSION -This document describes MCE::Mutex::Channel2 version 1.866 +This document describes MCE::Mutex::Channel2 version 1.868 =head1 DESCRIPTION |