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
.