http://www.perlmonks.org?node_id=532868


in reply to blessing support in new threads::shared ?

It refers to the following bug:
my $sobj : shared; my $sref = \do{ my $x }; share($sref); $sobj = $sref; bless $sobj, 'baz'; print ref $sobj, "\n"; $ perl587t /tmp/a.pl SCALAR $ perl588t /tmp/a.pl baz
But the main reason for a separate CPAN release was that I rewrote the threads::shared code to make it faster and use less memory; but that this change was too big to be integrated into 5.8.8

Dave.

Replies are listed 'Best First'.
Re^2: blessing support in new threads::shared ?
by renodino (Curate) on Feb 26, 2006 at 21:46 UTC
    Ah. I tend to use isa(), so I've not hit that yet.

    And while I've got your attention...

    Might you be persuaded to make threads::shared::_id() (or something similar) a public method ? When marshalling structures/objects between threads, its nice to be able to test if something is already shared, and just pop it into a queue, rather than (de/re)constructing. I'm currently using _id(), but using an obviously private method makes me nervous.

      I'm working on an update to threads::shared right now. There will be only minor changes: An update to ppport.h and improvements in the docs (notably information regarding the use of bless with shared variables). I'll add an exported function called 'is_shared' that will be an alias to '_id'. That should make it formal enough.

      I, too, used '_id' to test for sharing in the Object::InsideOut module, so I see this as a good addition to the module.

      Update: Uploaded to CPAN on 2006-02-27.


      Remember: There's always one more bug.