HP OpenVMS Systemsask the wizard |
The Question is: I currently have an applications that uses the binary tree RTL routines on a single-CPU system. The binary tree is in a global section and shared by multiple processes. In additions to multiple readers, there are multiple writers that can create new tree nodes. When a new node is added, I use the lock manager for atomicity. The application will be moving to a multi-processor system, and I was would like to know if there is any inherent sereialization in the binary tree routines themselves. For example, if I am adding a new node, are all lookups suspended? Do they need to be? If an insert is done and the tree is being rebalanced while other processes are trying to traverse the tree, will there be problems during traversal? Do I need to use a combination of concurrent and exclusive locking to control access to the tree? Thanks, Frank The Answer is :
The OpenVMS Wizard does not know that the internal processing of the
binary tree routines:
lib$insert_tree, lib$lookup_tree, lib$traverse_tree
is documented anywhere, and the OpenVMS Wizard thus does not recommend
making any assumptions in this area based on current behaviour of the
routines in an asynchronous environment as there is the potential that
changes could be made.
Consider using the appropriate mode locks (NL, PR, EX) to establish
the appropriate expected interlocking in the shared memory.
Also please see topics 1661 and 2681 for related information.
|