(no title)
adamkittelson | 2 years ago
This gives me a large number of units of concurrency, while allowing the overwhelming majority of the code to be written sequentially since most of the complicated bits (combat etc) happen within a room so I don't have to think about concurrency at all for those. The only communication between processes is moving monster / character data from one room to another when those entities move around the map.
bcrosby95|2 years ago
Consider this: bob is closing a door in rooma. A dragon is trying to move to rooma through that exit.
How do you code this such that bob never sees the dragon walk through a closed door? With no deadlocks?
The way I solved this is by creating a new process for coordinating multi-room actions. If a room is part of a coordinating process, it will queue everything from all other processes.