Hey All -
I’m creating a core server loop for my MUD that will command various modules of the game (each presumably running on their own thread) to refresh themselves. For example, the core loop would contact an actionsStack module and tell it to process a certain number of actions, contact a mobList module and tell it to command each mob to tick (retrieve actions, check if spell durations are up, lose health if bleeding, etc.), perhaps check on a newPlayerConnections module, maybe sleep, and then start all over.
My intention behind encapsulating all of the above functionality into various modules is that the core loop need not hang on any particular resource-intensive process, thereby delaying other processes.
A) Is this a reasonable solution to the problem?
B) If so, what is the best way to code a ‘refresh’ order from the core thread to secondary module threads? My first thought is to create a volatile boolean named refreshed, and have it set to false by the core thread. And the secondary thread would just loop while(!refreshed) { doStuff; }
Cheers.