Yep just have two lists (one of orders being sent to the troups, the other of news from the battlegrounds), a mutex around each one and once every X days make the troups check for orders and let the fort check for news...u
Admittedly, apart from things that come from your caravan and depart from your fortress, what happens outside of your fort is virtually independant of what happens inside of it. Could totally be multithreaded.
Only exceptions would be caravans or sieges. You could have a queue of entities coming to your fort that the map would check once a day, so an army moves on the map until it reaches your fort, is put in the waiting queue (mutex'ed) and at the following "midnight" the map would check that list (preventing the world from writing while the map reads it) and pop the siege.
There would be a slight delay but at the speed of the game it would be almost un-noticeable and very practical to do.
It would work differently in adventure mode, but if Toady has put the framework so that a method simulates a portion of the world at a certain scale for a certain in-game time, it would be trivial. Adventure mode would simulate local area for a tick every step the player has, greater area for 12 in-game hours every 12 in-game hours, etc while in fort mode you'd simulate continuously in another thread.
Anyway, since it can be deferred, I don't think simulating the world is going to be THAT much of a performance killer. Maybe once an in-game day you'd have half a second of freeze.