We don't bite newbies here... much | |
PerlMonks |
Re^2: Perl threading stability?by guice (Scribe) |
on Jul 25, 2005 at 17:59 UTC ( [id://477927]=note: print w/replies, xml ) | Need Help?? |
Now this part surpises me:
Shared data in perl's ithreads is very expensive, both in terms of speed and memory usage. A shared scalar variable usually has a copy in every thread that uses it, plus a separate shared copy. When you assign to a scalar, the thread's copy is updated, then that data is also copied to the hidden shared copy. When you read from a shared scalar, the data from the hidden shared copy is copied to the thread's one. Thus if you have N threads all accessing a long string variable, your memory usage will tend towards (N+1) times the length of the string. I would have thought Perl use references for everything, not complete copies, making things much less memory and resource intensive... Try to avoid having complex, deeply-nested shared data structures Doh! One of the ideas was to use an XML::Simple object to store server data and each thread would update that object based on possible changes ... looks like I might have to keep with fork() with a slight restructure in how i would modify that main hash.
-- philip
In Section
Seekers of Perl Wisdom
|
|