cp_avltree_unlock(3) - Linux man page
Name
cp_avltree_lock, cp_avltree_rdlock, cp_avltree_wrlock, cp_avltree_unlock - acquire / release a lock on
an AVL tree
Synopsis
#include <cprops/avl.h>
int cp_avltree_lock(cp_avltree *tree, int type);
int cp_avltree_rdlock(cp_avltree *tree);
int cp_avltree_wrlock(cp_avltree *tree);
int cp_avltree_unlock(cp_avltree *tree);
Description
cp_avltree_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_avltree_lock must be coupled with calls to cp_avltree_unlock after the operation is completed.
cp_avltree_rdlock(tree) is a synonym for cp_avltree_lock(tree, COLLECTION_LOCK_READ).
cp_avltree_wrlock(tree) is a synonym for cp_avltree_lock(tree, COLLECTION_LOCK_WRITE).
Return Value
cp_avltree_lock, cp_avltree_rdlock and cp_avltree_wrlock return 0 on
success, EINVAL if COLLECTION_MODE_NOSYNC is set or -1 if locking fails.
cp_avltree_unlock returns 0 on success or -1 if unlocking fails.
See Also
cp_avltree_set_mode(3), cp_avltree_insert(3)