Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked

Re: Seeking inside-out object implementations

by Codon (Friar)
on Dec 09, 2005 at 00:37 UTC ( #515432=note: print w/replies, xml ) Need Help??

in reply to Seeking inside-out object implementations

We are finishing up a re-architecture of one of our internal applications. Most of the design inherits from an Inside-out object that we developed (Common::Thing). It uses blessed scalar refs as the object. Every class that inherits from this class also inherits new(), copy(), seed(), dump(), as_hash(), and DESTROY() object methods and a make_attributes() class method. Common::Thing does some stash manipulations to make a getter/setter method for each attribute in the derived class's name space. A derived class would look something like:

package My::Thing; use base qw(Common::Thing); __PACKAGE__->make_attributes( qw/ head should knees toes / ); # methods to do work go in here 1;

It has worked well for our purposes, but certainly fails thread safety. We did quite a bit of work to stabalize our application around threads, but finally gave up when the fact that Perl is not thread-safe became overpoweringly obvious.

Ivan Heffner
Sr. Software Engineer, DAS Lead, Inc.

Replies are listed 'Best First'.
Re^2: Seeking inside-out object implementations
by jdhedden (Deacon) on Dec 09, 2005 at 19:17 UTC
    Making inside-out objects thread-safe is not a trivial process, but it can be done. Object::InsideOut is thread-safe, and even goes further by providing support for threads::shared.

    You might consider converting your Common::Thing module into a wrapper around Object::InsideOut to give you the functionality you need.

    Remember: There's always one more bug.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://515432]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (7)
As of 2018-06-21 11:19 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (118 votes). Check out past polls.