- 3 items remain before releasing the final MCE 1.5 distribution.
Document MCE::Stream, finish MCE::Loop and re-visit MCE::Flow.
Am interested in seeing the test results due to the next item
mentioned below (actually the main reason for a _002 release).
This has turned out to be a very long and tiresome journey for me.
Am very glad that this is almost over. MCE 1.5 is very fast.
Also like how the models are turning out; MCE::Map, MCE::Grep,
MCE::Loop -- will finish that next, plus MCE:Stream and MCE::Flow
will become the last two to document, re-visit, finish up.
Code-wise, that is 100% completed plus tested.
;) mario
- The top level MCE.pm file is now mainly an index page (POD wise). The
code previously located in MCE.pm (1.4) moved to MCE::Core, some of
which went to various files under the Core directory. The documentation,
previously MCE.pod, is now placed at the end of MCE::Core with the
examples section becoming MCE::Examples going forward.
MCE 1.5 is backwards compatible with 1.4 and below.
IPC has been enhanced with 8 data channels. Many operations run 3x when
compared with MCE 1.4.Five models: MCE::Flow, MCE::Grep, MCE::Loop, MCE::Map, and MCE::Stream.
Hybrid queues via MCE::Queue allowing for normal and priority queues.
MCE::Subs for exporting functions prefixed with mce_; e.g. mce_wid.
All public methods can be called directly using the package name
and method e.g. MCE->wid, MCE->run.MCE->new(
max_workers => 'auto', user_func => sub { my $wid = MCE->wid; MCE->sendto("STDOUT", "Hello from $wid\n"); }
);
MCE->run;
New options (gather, interval, task_name).
The task_end option can now be specified at the top level.
See docs for use case.
Input_data can be specified inside the first task instead of having
to specify this at the top level. Input_data is ignored when specified
for tasks other than the first task.
user_tasks => [{
input_data => \@list,
...
},{
...
}
New public methods
chunk_id, gather, freeze, thaw, yield, task_name, print, printf, sayNew example (interval.pl).
Optimized the egrep.pl and wc.pl examples. These run much faster.
Try these out against large log files. Both examples fly.Barrier synchronization update. Two sockets are utilized instead of
2 lock files. This, now works wonderfully under the Cygwin environment.
For threading, the removal of 2 lock files increases the number of
threads allowed from about 1/3rd previously to under 1/2 of ulimit,
e.g. int(ulimit -n / 2 - 20).Removed the logic for determining MAX_OPEN_FILES and MAX_USER_PROCS.
MCE no longer has a constraint on max_workers allowed.Code re-factor work. Added a private method _validate_runstate called
by various methods. Organized the code slightly such as placement of
methods.Localize the input scalar $_ prior to calling userfunc. Folks can
use $ for input_data and sequence of numbers. Added section to docs
explaining DEFAULT INPUT SCALAR.