cp_rbtree
Section: libcprops - cp_rbtree (3)
Updated: MAY 2006
Index
Return to Main Contents
 
NAME
cp_rbtree_lock, cp_rbtree_rdlock, cp_rbtree_wrlock, 
cp_rbtree_unlock - acquire / release a lock on an red-black tree
 
SYNOPSIS
#include <cprops/rb.h>
int cp_rbtree_lock(cp_rbtree *tree, int type);
int cp_rbtree_rdlock(cp_rbtree *tree);
int cp_rbtree_wrlock(cp_rbtree *tree);
int cp_rbtree_unlock(cp_rbtree *tree);
 
DESCRIPTION
cp_rbtree_lock
locks the tree for reading if
type 
is 
COLLECTION_LOCK_READ
or for writing if 
type
is COLLECTION_LOCK_WRITE. The tree mode may not have
COLLECTION_MODE_NOSYNC
set prior to locking. Explicit locking isn't required for single tree 
operations (insertion, retrieval, deletion) which perform locking on their own
but rather for transaction-like operations. To prevent other threads from 
accessing the tree while performing a series of mapping insertion, removal and 
lookup operations, the tree must be explicitly locked first. Tree operation
functions will not attempt locking if the current thread owns the tree lock. 
This prevents deadlocks but leaves the responsibility for using the correct 
kind of locking with the application: if there's any possibility the 
application could change the tree structure in the transaction (ie insert or
remove a mapping), the tree must be write locked. If the transaction consists
of lookups only, the tree may be read locked. 
Calls to
cp_rbtree_lock
must be coupled with calls to 
cp_rbtree_unlock 
after the operation is completed. 
cp_rbtree_rdlock(tree)
is a synonym for cp_rbtree_lock(tree, COLLECTION_LOCK_READ).
is a synonym for cp_rbtree_lock(tree, COLLECTION_LOCK_WRITE).
 
RETURN VALUE
cp_rbtree_lock, 
cp_rbtree_rdlock
and
cp_rbtree_wrlock
return 0 on success, EINVAL if COLLECTION_MODE_NOSYNC is set or -1 if locking
fails. 
cp_rbtree_unlock
returns 0 on success or -1 if unlocking fails. 
 
SEE ALSO
cp_rbtree_set_mode(3),
cp_rbtree_insert(3)
 Index
- NAME
- 
- SYNOPSIS
- 
- DESCRIPTION
- 
- RETURN VALUE
- 
- SEE ALSO
- 
| This document was created by
 man2html,
using the manual pages. Time: 17:58:11 GMT, September 08, 2006
 |   |