Ironically, the issue with the legacy simulators also seems to plague FSXX (MSFS 2020).
I am currently (current version as of 2020-12-21, winter solstice) limited by my main CPU thread. FSXX hogs the main CPU thread at nearly a 100%, while the other threads seem to be on vacation, running at 30% to 40% mostly.
Problem is of course that somehow, Windows 10 seems to run most applications on the main thread by default.
Is there a way to force FSXX to use a different CPU thread as its “main” thread? (Such as we can do with XP11.)
Or is there a way to motivate Windows 10 to distribute load more evenly between threads?
It’s up to the process (i.e. sim/game), not Windows, to distribute load between threads. Windows can’t do anything about that whatsoever.
What you can do (but I don’t think it will help!) is to go to task manager and change the CPU affinity for FlightSimulator.exe to decide which CPU cores it may run on.
There isn’t a “main thread” for the computer. Nor has my experience been that Windows tries to run multiple applications on one CPU - just not the case. So I wouldn’t worry about trying to do anything here.
Also, I wouldn’t say this is an issue of “legacy simulators” so much as just realtime simulation in general. Tends to be very single-thread heavy in nature due to how you have to integrate and solve the physics from one millisecond to the next. Just kinda the nature of the beast to some degree.
Thread management/processor affinity/scheduling/etc. are complex low-level concepts the details and implementation of which at the hardware, OS and application levels have been refined over decades. It’s implausible that a one-click setting in the task manager is going to suddenly unlock hidden performance.
You’ve misunderstood the situation a bit, I’m afraid. The “main thread” refers not to a physical CPU core, but to one of the execution threads of the application program. It’s “main” because it’s the logical execution thread which performs the most work driving the simulation – the designation is completely arbitrary and relates to the work the program is doing, not the physical CPU.
Since the main thread does most of the work, it will load up most or all of one CPU core usually, and stably run there. Because it’s the one doing the most work, the CPU and the operating system are already going to be giving it the biggest clock speed boost they can arrange for safely without making your CPU run too hot and begin to have errors.
However because several other threads are working and there is moderate load on several other cores, you might not find that the core the main thread is on runs at the full single-threaded “boost clock” or “turbo boost” clock speed – it will likely be at an intermediate boost level.
For instance on my Ryzen 7 3700X (base clock 3.6 GHz, boost clock 4.4 GHz) the core my main thread is on usually runs between 4.0 GHz and 4.2 GHz. It can’t run any faster without overclocking the CPU, which can make the system less stable unless you’re very careful about monitoring it and you might need additional equipment for better cooling to achieve it.