What we are doing here is a thread that can be used externally, I can call things from outside inside this thread. Now a normal thread in Perl is just a sub that is called, and what happens after this we don't know or control.

In a normal Perl thread, after create it, we can't say externally to load some modules or to call functions inside it, and this is the point here!

Nor this one? If I call into one thread, from another thread, does the calling thread block until the called thread completes? If so, the what is the thread doing for me? If not, how does this differ from starting the thread and then calling join to retrieve the results at some later point?

I've downloaded the module, read the pod and looked through the code, and I am a loss to understand as to what this module does beyond using eval to defer loading of modules until runtime? Which can be achieved using require and import.

I see lots of API, and Storable used to freeze something and then thaw it. I see lots of state that replicates state internal to threads.pm.

What I do not see is why I would use it?

This isn't critisism of the module--though it maybe of the documentation a little. It is just me trying to understand why I might use it. The examples do not make it clear to me what the module gets me?

Maybe this can help you. With a normal Perl thread, create 2 threads, make the 2 thread load 2 pages, let's say www.perlmonks.com, but you need to do all of this loading only 1 time LWP::Simple.

Remember that when you create 2 threads and use LWP::Simple from this 2 threads you are loading LWP::Simple 2 times in the memory since Perl duplicate everything when a thread is created. If you play a while with threads you will see that Perl threads use to much memory, so I can't load more than 10 threads to do a real job. With Delphi for example we can load more than 30 threads and still have a good execution, with Perl if I use more than 8 I start to see the application to be slow! Is more about performance and not what is possible to do.