Multithreading
Oh god... you have more entities you want to command? Even at the same time? Time to take a look at this...
Millions of dwarves and you want to command and move them all at the same time, but you set yourself high goals. How well Arch is prepared for this!
This is not a problem, because Arch comes with its own JobScheduler
. This does not generate any garbage and is incredibly fast, even has dependencies and co. What more could you want? Let's be honest!
Tearing the world apart
Not much is needed to set up multithreading. You set it up, you know it and that's it!
So the world uses the JobScheduler
and you don't need direct contact to it, but if you want to, you can also access it directly!
Utilise full resources
Wonderful, now we have set up the JobScheduler
, all we need to do is let it work to utilise the full capacity of our power!
This runs a query that processes the entities simultaneously on several cores of your CPU. Arch does everything for you by itself, all you have to do is set it up and change the name of the Query
here and there... cool right? Just be careful, you have to synchronise access to other objects yourself!
And now we have EVEN more power to march our armies, marvellous, isn't it? Your computer will probably take off, but it's worth it.
Of course, every form of Query
is supported again. Even inline queries.
Each of these calls, whether world.ParallelQuery
or world.InlineParallelQuery
, will block the main thread until the Query
has been processed. The processing itself still takes place in parallel, but the main thread waits before continuing.
Getting to the roots
If this is all too high level for you, there is also the option of tackling the problem further down. Not below the belt, of course!
This is what it looks like under the bonnet. This is what happens when you call the other two queries, so you can take over the whole thing yourself and add your own logic!
And you'll have even more power for everything you set out to do... honestly, what do you want with so much power anyway?
Last updated