in reply to
Recursive locks:killer application. Do they have one?
I agree, although I find the following comment on StackOverflow quoting Dave Butenhof more convincing, the one that basically goes "if you think you need this, you're doing it wrong".
That said, the same goes for the whole multithreading paradigm, at least in scripting languages. Separated address spaces were invented for a reason, namely to keep people from shooting themselves in the foot in one of the many ways possible without them---I've used an Amiga for a long time and probably succeeded at most of these. I know a few people that I believe know what they're talking about when they say they need multithreading because everything else would be even more complicated, but the vast majority of programs and everything written by people who think multithreading was easy would be better served by a decent fork() (OK, sucks to be on Windows ...) or a state machine.