use strict; use warnings; use MCE::Hobo; use MCE::Shared; use Tie::Hash::Indexed; use Hash::Ordered; use MCE::Shared::Ordhash; tie my %hi, 'MCE::Shared', { module => 'Tie::Hash::Indexed' }, total => 0; tie my %ho, 'MCE::Shared', { module => 'Hash::Ordered' }, total => 0; tie my %oh, 'MCE::Shared', { module => 'MCE::Shared::Ordhash' }, total => 0; sub task { my $id = shift; $hi{$id} = $id; tied(%hi)->lock; $hi{total}++; tied(%hi)->unlock; $ho{$id} = $id; tied(%ho)->lock; $ho{total}++; tied(%ho)->unlock; $oh{$id} = $id; tied(%oh)->lock; $oh{total}++; tied(%oh)->unlock; } MCE::Hobo->create('task', $_) for 1..4; MCE::Hobo->wait_all(); my (@k, @v); @k = keys %hi; print "hi keys: @k\n"; @k = keys %ho; print "ho keys: @k\n"; @k = keys %oh; print "oh keys: @k\n"; @v = values %hi; print "hi vals: @v\n"; @v = values %ho; print "ho vals: @v\n"; @v = values %oh; print "oh vals: @v\n"; __END__ hi keys: total 1 2 3 4 ho keys: total 1 2 3 4 oh keys: total 1 2 3 4 hi vals: 4 1 2 3 4 ho vals: 4 1 2 3 4 oh vals: 4 1 2 3 4