--stuff--
You're misunderstanding some fundamental parts of threading. join() is a blocking operation, which means it waits at that operation for the thread to return. That does not, by any means, solve the vast majority of concurrency problems. The
only problem that solves is ensuring that certain threads have returned by the time you do some subsequent action. It doesn't solve concurrent writing nor does it solve race conditions. Nor really any other concurrency problem... Use enough threads for enough things and you'll start running into funky behavior. Also forking off a thread does not make things faster. It lets the program use an extra process, which might be run concurrently with the original if you have multiple CPU cores. In fact, if you have too many more threads than cores, it actually slows down the program because it has to round robin all the threads. Basically, when the CPU needs to run more processes than it has core, it starts and stops them seemingly at random to make sure they all get a turn to do what they're supposed to. At this precise moment, my computer is running 65 processes. I have two cores. The OS has its work cut out for it figuring out how to let all of them do their thing. A lot of these processes are blocking or sleeping or something, but the OS still has to give them their turn so they can basically say "come back later". Then there's all of those daemons; any processes that run in the background without user intervention. They run in the background without you ever noticing them...although you'd probably notice if one of them suddenly died when, say, the internet suddenly stops working because the daemon running your network card died.
Threading DF wouldn't be beyond Toady's ability. It would take awhile, but if done correctly, could potentially improve performance. The hardest part about threading existing work is that you need to figure out what you
can thread. You absolutely can't just throw any function into a thread and expect it to work right. Threading involves a lot of careful planning. If the program isn't designed with threading in mind, it can be difficult to figure out what you can and can't reasonably do.
Threads aren't magic. They don't automagically make programs faster. They just give it the ability to do more than one thing at a time. Whether you call it threading, concurrency, or parallel; it's a major subject that's rather complicated. Universities have entire classes on parallel...