Simulation with Erlang

Jim Larson <>
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
rolled-back.

Jim



More information about the erlang-questions mailing list