use strict; use warnings; use MCE::Mutex; use MCE::Shared; my $mutex = MCE::Mutex->new(); my $data = MCE::Shared->array(); if ( ! defined ( my $pid = fork() ) ) { die "Cannot fork!: $!"; } elsif ( $pid == 0 ) { # Child MCE::Shared->init(); my $item; sleep 1; for ( my $i = 1; $i <= 10; $i++ ) { $mutex->lock(); $item = $data->shift(); $mutex->unlock(); $item = '' if ( ! defined $item ); print "Child: $item\n"; } } else { # Parent for ( my $i = 1; $i <= 10; $i++ ) { $mutex->lock(); $data->push($i); $mutex->unlock(); print "Parent: ", join(" ", $data->vals()), "\n"; } waitpid( $pid, 0 ); }