use strict;
use warnings;
use threads;
use threads::shared;
# enable autoflush on the handle
STDERR->autoflush;
my $sem_stderr :shared;
sub print_err { lock $sem_stderr; print STDERR @_; }
sub task {
my $id = shift;
my $str = "ab " x 3000;
for (1..10000) {
print_err($str, "\n");
}
}
threads->create('task', $_) for 1..40;
$_->join for threads->list;
####
use strict;
use warnings;
use threads;
use MCE::Shared;
mce_open my $err_fh, '>>', \*STDERR;
sub task {
my $id = shift;
my $str = "ab " x 3000;
for (1..10000) {
print $err_fh $str, "\n";
}
}
threads->create('task', $_) for 1..40;
$_->join for threads->list;
##
##
use strict;
use warnings;
use MCE::Hobo;
use MCE::Shared;
mce_open my $err_fh, '>>', \*STDERR;
sub task {
my $id = shift;
my $str = "ab " x 3000;
for (1..10000) {
print $err_fh $str, "\n";
}
}
MCE::Hobo->create('task', $_) for 1..40;
$_->join for MCE::Hobo->list;
##
##
MD5 (output.txt) = b5bf2b49acd0926a9fa156def91579a0
400000 1200000000 3600400000 output.txt