Whenever a resource being modeled is accessed, an indication about the
access is stored in a number of memory locations of a corresponding
number of applications that are interested in monitoring the resource.
The memory locations (also called "monitoring memory locations") are
individually identified for each application when allocating a location
in main memory. At this time, a pointer to the monitoring memory location
is supplied to the application and also added to a group of pointers of
locations to be updated when accessing the resource. In addition, in
certain embodiments, a bit is allocated within a bitmap for each
monitoring memory location for any given application. Such a bit is set
at the time of updating the corresponding monitoring memory location and
cleared when the application reads the monitoring memory location. Just
checking the bitmap as a whole can inform an application if there is any
change in any monitoring memory locations of that application. Moreover,
the application may use individual bits of the bitmap to identify (and
cycle through) only those monitoring memory locations that have changed.
Update of monitoring memory locations may be implemented via overloading
of operators that access each resource.