We know that basically every fort a player plays that doesn't immediately die will succumb to FPS death, we know virtually every modern CPU can do about 8x more work than the game can currently utilize. Why not try and unlock that at all
1. We don't know that first thing at all, actually. BlindIRL's longdeath ran for something like 1000 years(?) and never suffered "FPS death", just the entropy of the game's hard cap of 3000 units before it stops bringing in migrants. It's not an inevitability as described,
especially since the optimization in 50.05 was apparently
way stronger than I thought because I didn't test it on a >=200 citizen fortress.
2. 8x the CPU time but not nearly so much gain in performance. Synchronization overhead is pretty dang onerous, actually.
Two things, one I don't see why finding a path necessitates modifying globally shared state at all let alone concurrently, and two having a bunch of different threads doing pathfinding at the same time isn't what I suggested anyway; if pathfinding is a relatively rare but slow task, just have one thread for pathfinding while the main thread does the rest of the tick. Since pathfinding apparently doesn't happen very often, I'm assuming it probably isn't the case that normally you need two paths calculated in the same tick anyway. Maybe pathfinding takes so much longer than the rest of the tick that you don't see much difference, maybe it does, impossible to say without knowing how long pathfinding calls actually take.
1. It doesn't and having separate pathfinders for each thread would be possible, yes.
2. One thread for pathfinding while the main thread does the rest is not possible because whatever the game needs a path for it uses
immediately. You can't just foist it off onto another thread, the original ones needs that.
3. Pathfinding does in fact tend to take up a huge chunk of whatever tick it happens in and synchronizing it would remove a lot of the benefit.
I do think it's not unlikely that multithreading a lot of map block operations would be possible, which would have the benefit of making larger embarks much faster (!), but it would take such a major rewrite that it's still much better to go for smaller, "incremental" improvements. 50.05's optimization was commenting out 3 lines.