http://qs321.pair.com?node_id=1216598


in reply to Re^8: Why should any one use/learn Perl 6?
in thread Why should any one use/learn Perl 6?

Thank you for your elaboration.

If I understand you correctly, you either have a little boilerplate with tie

tie my $var, 'MCE::Shared', 0; $var = 42;

or you have a lot of boilerplate without tie

my $var = MCE::Shared->share( { module => 'My::Scalar' }, 0 ); $var->set(42)

And underneath you have locking going on in either case. Is that a correct summary?

Please note that I really like what you have done with MCE!

Replies are listed 'Best First'.
Re^10: Why should any one use/learn Perl 6?
by marioroy (Prior) on Jun 13, 2018 at 23:29 UTC

    Hello liz,

    Under the hood (MCE::Shared::Server), the boilerplate is the same between OO and TIE for the most part. For Perl-like behavior, the TIE interface involves additional overhead from Perl itself.

    MCE::Mutex is used internally for locking. There are 10 locks, one per data channel. A worker from MCE, MCE::Hobo, or threads is assigned a data-channel automatically in a round-robin fashion. 10 workers max can obtain an exclusive lock simultaneously. The unidirectional command-channel involves no locking.

    Other parallel modules on MetaCPAN may benefit from multiple data channels simply by calling MCE::Shared::init() inside the worker.

    Regards, Mario