Simulation with Erlang
Wed Dec 13 19:48:46 CET 2000
Take a look at the "Time Warp" multiprocessor simulation framework
(sorry, my references aren't handy at the moment). Instead of
requiring all concurrent entities of the simulation to run in
lock-step, each goes at its own pace. The different simulation
pieces interact with each other through timestamped messages.
If a process receives a message with a timestamp earlier than its
internal time, it is required to roll-back its internal clock and
re-run its simulation with the new message factored in. If the
process had sent out messages to other processes based on the
rolled-back state, it has to send out anti-messages to have the
other processes undo *their* work, and so on.
A global "commit" algorithm detects the progress of the system as
a whole, deciding when some results are safe and can't possibly be
More information about the erlang-questions