Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Re: Anti-inside-out-object-ism

by diotalevi (Canon)
on Dec 09, 2005 at 21:13 UTC ( #515655=note: print w/replies, xml ) Need Help??

in reply to Anti-inside-out-object-ism

I'd like to hear about how I make an inside out object be thread safe (including whatever thread::shared) is. Do you have references for that?

Replies are listed 'Best First'.
Re^2: Anti-inside-out-object-ism
by jdhedden (Deacon) on Dec 09, 2005 at 21:28 UTC
    xdg provided the original insight on how to make inside-out objects thread-safe in Threads and fork and CLONE, oh my!.

    threads::shared provides the capability to share variables between threads such that changing the value in one thread makes that change visible in another thread. Object::InsideOut is unique among inside-out object support modules (and, to my knowledge, all other object support modules, as well) in providing support for threads::shared, thus giving you the capability to share objects between threads. As for how to do it, you'd have to look at the module's code to see how. It is not a trivial process.

    Remember: There's always one more bug.
      xdg provided the original insight on how to make inside-out objects thread-safe in Threads and fork and CLONE, oh my!.

      Though it bears repeating that this is only possible on Perl 5.8 or better which supports the special CLONE method.

      Whether using threads or threads::shared in Perl is a good idea or not is a whole separate issue. (c.f. Things you need to know before programming Perl ithreads and Re: Reliable asynchronous processing). However, it's important for people to realize that forking on Win32 actually uses threads (c.f. perlfork) so this behavior of inside-out objects needs to be continually flagged.

      None of these are "deal-killers" for inside-out objects, but they do require awareness and management of complexity. That said, I think jdhedden has done a great job with Object::InsideOut (as he did with Math::Random::MT::Auto) in creating something that might well serve as the gold-standard in the category.


      Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://515655]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (3)
As of 2022-07-06 16:59 GMT
Find Nodes?
    Voting Booth?

    No recent polls found