diff options
author | Angel Abad <angel@debian.org> | 2018-03-17 09:54:54 +0100 |
---|---|---|
committer | Angel Abad <angel@debian.org> | 2018-03-17 09:54:54 +0100 |
commit | 3c267097308b1d6b3164bfc4968f4f54eec458f2 (patch) | |
tree | aa68d18aec8ad04ff9379160981f8cedbad65cb1 /lib/MCE.pm | |
parent | 7c44f26a443312c925a0353849b9a172b7bf8ceb (diff) |
New upstream version 1.835
Diffstat (limited to 'lib/MCE.pm')
-rw-r--r-- | lib/MCE.pm | 47 |
1 files changed, 26 insertions, 21 deletions
@@ -11,7 +11,7 @@ use warnings; no warnings qw( threads recursion uninitialized ); -our $VERSION = '1.833'; +our $VERSION = '1.835'; ## no critic (BuiltinFunctions::ProhibitStringyEval) ## no critic (Subroutines::ProhibitSubroutinePrototypes) @@ -35,7 +35,7 @@ BEGIN { $_tid = $_has_threads ? threads->tid() : 0; $_oid = "$$.$_tid"; - if ($] ge '5.008008' && !exists $INC{'PDL.pm'}) { + if ($] ge '5.008008' && !$INC{'PDL.pm'}) { eval ' use Sereal::Encoder 3.015 qw( encode_sereal ); use Sereal::Decoder 3.015 qw( decode_sereal ); @@ -59,6 +59,7 @@ BEGIN { return; } +use IO::Handle (); use Scalar::Util qw( looks_like_number refaddr weaken ); use Socket qw( SOL_SOCKET SO_RCVBUF ); use Time::HiRes qw( sleep time ); @@ -359,6 +360,18 @@ sub _restore_state { ## ############################################################################### +sub _croak { + if (MCE->wid == 0 || ! $^S) { + $SIG{__DIE__} = \&MCE::Signal::_die_handler; + $SIG{__WARN__} = \&MCE::Signal::_warn_handler; + } + $\ = undef; goto &Carp::croak; +} + +use MCE::Core::Validation (); +use MCE::Core::Manager (); +use MCE::Core::Worker (); + sub new { my ($class, %self) = @_; my $_pkg = exists $self{pkg} ? delete $self{pkg} : caller; @@ -447,10 +460,6 @@ sub new { } } - require MCE::Core::Validation unless $INC{'MCE/Core/Validation.pm'}; - require MCE::Core::Manager unless $INC{'MCE/Core/Manager.pm'}; - require MCE::Core::Worker unless $INC{'MCE/Core/Worker.pm'}; - _validate_args(\%self); ## ------------------------------------------------------------------------- @@ -471,13 +480,13 @@ sub new { $self{_last_sref} = (ref $self{input_data} eq 'SCALAR') ? refaddr($self{input_data}) : 0; - my $_data_channels = ($_oid eq "$$.$_tid") ? DATA_CHANNELS : 2; + my $_data_channels = ("$$.$_tid" eq $_oid) ? DATA_CHANNELS : 2; my $_total_workers = 0; if (defined $self{user_tasks}) { $_total_workers += $_->{max_workers} for (@{ $self{user_tasks} }); } else { - $_total_workers = $self{max_workers}; + $_total_workers = $self{max_workers}; } $self{_init_total_workers} = $_total_workers; @@ -486,7 +495,7 @@ sub new { ? $_total_workers : $_data_channels; $self{_lock_chn} = ($_total_workers > $_data_channels) ? 1 : 0; - $self{_lock_chn} = 1 if ($INC{'MCE/Hobo.pm'}); + $self{_lock_chn} = 1 if $INC{'MCE/Hobo.pm'}; $MCE = \%self if ($MCE->{_wid} == 0); @@ -513,12 +522,13 @@ sub spawn { lock $_MCE_LOCK if $_has_threads; # Obtain locks lock $_WIN_LOCK if $_is_MSWin32; - sleep 0.015 if ($_tid && !$self->{use_threads}); - if ($INC{'PDL.pm'}) { local $@; eval 'use PDL::IO::Storable' unless $INC{'PDL/IO/Storable.pm'}; eval 'PDL::no_clone_skip_warning()'; } + if ( $INC{'LWP/UserAgent.pm'} && !$INC{'Net/HTTP.pm'} ) { + local $@; eval 'require Net::HTTP; require Net::HTTPS'; + } ## Start the shared-manager process if present. MCE::Shared->start() if $INC{'MCE/Shared.pm'}; @@ -544,6 +554,10 @@ sub spawn { } } + if ("$$.$_tid" ne $_oid && (!$self->{use_threads} || $_is_MSWin32)) { + sleep 0.015; + } + my $_die_handler = $SIG{__DIE__}; my $_warn_handler = $SIG{__WARN__}; @@ -1387,7 +1401,7 @@ sub sync { print {$_DAT_W_SOCK} OUTPUT_B_SYN.$LF . $_chn.$LF; ## Wait until all workers from (task_id 0) have synced. - MCE::Util::_sock_ready($_BSB_R_SOCK) if $_is_MSWin32; + MCE::Util::_sock_ready($_BSB_R_SOCK, -1) if $_is_MSWin32; 1 until sysread($_BSB_R_SOCK, $_buf, 1) || ($! && !$!{'EINTR'}); ## Notify the manager process (barrier end). @@ -1771,15 +1785,6 @@ sub say { ## ############################################################################### -sub _croak { - if (MCE->wid == 0 || ! $^S) { - $SIG{__DIE__} = \&MCE::Signal::_die_handler; - $SIG{__WARN__} = \&MCE::Signal::_warn_handler; - } - - $\ = undef; goto &Carp::croak; -} - sub _exit { my $self = shift; |