The Snapshot data structure is used to keep track of the status of operations performed on distributed data structures. It allows the application programmer to take a snapshot of a data structure in which no mutating operations are in progress: all mutators have either completed or have been suspended before having any side effects. This is called freezing the data structure. Not all data structures in Multipol can be frozen. To allow for freezing, the data structure must contain a Snapshot object and the data structure operations must conform to certain conventions described below.
Snapshots can be taken with respect to all mutators on a single data structure, a subset of the mutators, or a set of mutators across multiple data structures. In the latter case, the data structures all share the same Snapshot object. Examples of Snapshot uses include termination detection of distributed computation and viewing the ``simulation time'' in distributed simulation.
DistObj.