Great suggestion. Not so sure if the autonomous move algorithms work great for DF as they can't always guarantee reaching your destination they might actually lead you in circles.
Having "incomplete" pathfinding and validation might only be part of the solution. But once you use it you can do multithreading because you are not fully sync anymore anyway..
I am not a game developer but I am a programmer. If I would have to solve it I would probably roughly do it this way:
- Make static snapshot of level data at time t in memory.
- Hand over pathfinding of objects for origin a to target b to seperate threads
- Give path back to main when finished
- Make new static snapshot when all threads have gone to zero or frame limit l was reached and start over
You'd need some kind of movement validation and if it fails spawn a new pathfinding.
Its probably doable when all dwarfs are able to pass through each other. It becomes insanely more difficult once you have actual colliding, moving objects.
That said if you are able to keep the frame limit l down by scaling up on many cores then maybe only tiny differences happen between real level and snapshot.
Probably hordes of dwarfs moving close to each other or something like a goblin siege massive battle would be brutal. But for prototyping you could try it with disabling collision on all moving objects first.
That said I am way out of my line of work here and you usually encounter all the real problems when you are superdeep in the details so anyone who knows more about pathfinding or how DF works feel free to point out if this is total BS. So I am in no way suggesting this is easy on the contrary just wanted to speculate some

Ideas are cheap actually doing it and solving the myriad of problems coming up is the hard work.