Honestly, I didn't reallize that threads did not use shared memory. If anything, I'd have assumed that they used shared memory even more than processes. After all, in threads, the semantic is not copy-on-write...
That's very interesting. I have to admit that I'm still stuck in the perl 5.005 world (with plans to upgrade later this year). So my knowledge of perl threads come from the 5.005 threads documentation (as I said elsewhere... only from documentation, not from using them). And that documentation paints a very different picture. Wow.
In short, the fact that (more recent) perl's threads are implemented neither as lightweight processes (kernel threads) nor with non-shared data as forked copy-on-write memory, just floors me. I hate to be overly critical of the folks who have given me so much... espescially without understanding what the detailed rationale for this kind of approach was... But still: what the heck?
Well, I can at least hope that what they've really done is define an interface that they can work with, over a somewhat defficient implementation, with plans to go back and improve the implementation while preserving the interface. I've got to say that the amount of churn in the threading implementation of perl has got to be a set-back for its acceptance, at this point.