|
cds
2.3.2
|
Metafunction converting option list to EllenBinTreeSet traits.
More...
#include <cds/container/details/ellen_bintree_base.h>
Public Types | |
| typedef implementation_defined | type |
| Metafunction result. | |
Metafunction converting option list to EllenBinTreeSet traits.
Options are:
ellen_bintree::key_extractor - key extracting functor, mandatory option. The functor has the following prototype: It should initialize dest key from src data. The functor is used to initialize internal nodes.opt::compare - key compare functor. No default functor is provided. If the option is not specified, opt::less is used.opt::less - specifies binary predicate used for key compare. At least opt::compare or opt::less should be defined.opt::item_counter - the type of item counter, default is disabled (atomicity::empty_item_counter). To enable it use atomicity::item_counter or atomicity::cache_friendly_item_counter opt::memory_model - C++ memory ordering model. Can be opt::v::relaxed_ordering (relaxed memory model, the default) or opt::v::sequential_consistent (sequentially consisnent memory model).opt::allocator - the allocator for leaf nodes which contains data. Default is CDS_DEFAULT_ALLOCATOR.opt::node_allocator - the allocator for internal nodes. Default is CDS_DEFAULT_ALLOCATOR.ellen_bintree::update_desc_allocator - an allocator of update descriptors, default is CDS_DEFAULT_ALLOCATOR. Note that update descriptor is helping data structure with short lifetime and it is good candidate for pooling. The number of simultaneously existing descriptors is a relatively small number limited the number of threads working with the tree and RCU buffer size. Therefore, a bounded lock-free container like cds::container::VyukovMPMCCycleQueue is good choice for the free-list of update descriptors, see cds::memory::vyukov_queue_pool free-list implementation. Also notice that size of update descriptor is not dependent on the type of data stored in the tree so single free-list object can be used for several EllenBinTree-based object.opt::stat - internal statistics, by default disabled (ellen_bintree::empty_stat). To enable it use ellen_bintree::stat.opt::backoff - back-off strategy, by default no strategy is used (cds::backoff::empty)opt::rcu_check_deadlock - a deadlock checking policy, only for RCU-based tree. Default is opt::v::rcu_throw_deadlock.