Why Threads are a Bad Idea (for most purposes) (1995) [pdf]
I agree. The actor model where actors can be scheduled on any thread is the best (Erlang, Goroutines). Second best is the node.js model of single threaded evented programming.