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


in reply to sharing complex data structures

  1. What version of Perl are you using ?
  2. What version of threads are you using ?
  3. What version of threads::shared are you using ?
And yes, you need to share the $res object. Every reference stored in a shared object must also be shared. And I don't know if a $res object can be shared. If it contains file handles or coderefs, or uses tie()s, than no. If its just an object with scalar members, then probably. Anything in-between will require the new shared_clone() capability (as you've used on $data above, for reasons that escape me, since you're just creating a hashref).

I suspect your app will need some refactoring to be able to use threads effectively, but as you've not posted any significant code, its a challenge to decipher your intent.


Perl Contrarian & SQL fanboy

Replies are listed 'Best First'.
Re^2: sharing complex data structures
by Anonymous Monk on Jul 08, 2008 at 14:04 UTC
    Perl: 5.10 (1003)
    threads: 1.71
    threads::shared: 1.23

    my asumption was correct, I need to somehow share my $res object. It's a http::response object so I'm sure of the best way to share it.

      Looks like you're running the latest stuff.

      IIRC, there's no file handles, coderefs, or ties in an HTTP::Response, so it may be as simple as share_clone($res).


      Perl Contrarian & SQL fanboy