In the context of this discussion, it is worth repeating the thread usage discussion in "perldoc perlthrtut"
. I have emphasized the primary usage directive, which explains the "right" way to use threads with the current implementation (5.8).
The main thing to bear in mind when comparing ithreads to other
threading models is the fact that for each new thread created, a
complete copy of all the variables and data of the parent thread has to
be taken. Thus thread creation can be quite expensive, both in terms of
memory usage and time spent in creation. The ideal way to reduce these
costs is to have a relatively short number of long-lived threads, all
created fairly early on - before the base thread has accumulated too
much data. Of course, this may not always be possible, so compromises
have to be made. However, after a thread has been created, its
performance and extra memory usage should be little different than
Also note that under the current implementation, shared variables use a
little more memory and are a little slower than ordinary variables.