A handle administration system is described in which software agents
receive handles to various resources that they can use to obtain the
resources. The described embodiments provide multiple states that can be
assumed by the handles. An unassigned state is provided in which handles
are not assigned to a particular resource, nor can they be dereferenced
to obtain pointers to any resources. An assigned state is provided in
which handles are assigned to a particular resource and can be
dereferenced to obtain a pointer to the resource. A suspended state is
provided in which the handles are assigned to a particular resource but
cannot be dereferenced to obtain a pointer to that resource.
Advantageously, a suspended handle can be reinstated to assume the
assigned state. In one embodiment, the handle system is implemented by
incorporating a suitable field in a handle database that is used to
indicate that a handle is suspended. In another embodiment, no additional
fields are necessary. Rather, handle values in the handle database are
manipulated to indicate that a handle has been suspended. These
manipulations can be easily undone to reinstate a handle. In the
described embodiment, a three state handle system can be advantageously
employed to implement a two-phase commit operation.