3 #include "tree/hdr_ellenbintree_set.h"
4 #include <cds/urcu/general_threaded.h>
5 #include <cds/container/ellen_bintree_set_rcu.h>
7 #include "tree/hdr_intrusive_ellen_bintree_pool_rcu.h"
8 #include "unit/print_ellenbintree_stat.h"
11 namespace cc = cds::container;
12 namespace co = cds::opt;
14 typedef cds::urcu::gc< cds::urcu::general_threaded<> > rcu_type;
16 typedef cc::ellen_bintree::node<rcu_type, EllenBinTreeSetHdrTest::value_type> tree_leaf_node;
17 typedef cc::ellen_bintree::internal_node< EllenBinTreeSetHdrTest::key_type, tree_leaf_node > tree_internal_node;
18 typedef cc::ellen_bintree::update_desc<tree_leaf_node, tree_internal_node> tree_update_desc;
21 template <typename Tree>
22 void operator()( Tree const& t)
24 std::cout << t.statistics();
30 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpt_less()
32 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
33 cc::ellen_bintree::make_set_traits<
34 cc::ellen_bintree::key_extractor< key_extractor >
39 test_rcu<set_type, print_stat>();
42 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpt_cmp()
44 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
45 cc::ellen_bintree::make_set_traits<
46 cc::ellen_bintree::key_extractor< key_extractor >
47 ,co::compare< compare >
51 test_rcu<set_type, print_stat>();
54 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpt_cmpless()
56 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
57 cc::ellen_bintree::make_set_traits<
58 cc::ellen_bintree::key_extractor< key_extractor >
59 ,co::compare< compare >
64 test_rcu<set_type, print_stat>();
67 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpt_less_ic()
69 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
70 cc::ellen_bintree::make_set_traits<
71 cc::ellen_bintree::key_extractor< key_extractor >
73 ,co::item_counter< cds::atomicity::item_counter >
77 test_rcu<set_type, print_stat>();
80 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpt_cmp_ic()
82 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
83 cc::ellen_bintree::make_set_traits<
84 cc::ellen_bintree::key_extractor< key_extractor >
85 ,co::item_counter< cds::atomicity::item_counter >
86 ,co::compare< compare >
90 test_rcu<set_type, print_stat>();
93 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpt_less_stat()
95 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
96 cc::ellen_bintree::make_set_traits<
97 cc::ellen_bintree::key_extractor< key_extractor >
99 ,co::stat< cc::ellen_bintree::stat<> >
103 test_rcu<set_type, print_stat>();
106 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpt_cmp_ic_stat()
108 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
109 cc::ellen_bintree::make_set_traits<
110 cc::ellen_bintree::key_extractor< key_extractor >
111 ,co::item_counter< cds::atomicity::item_counter >
112 ,co::stat< cc::ellen_bintree::stat<> >
113 ,co::compare< compare >
117 test_rcu<set_type, print_stat>();
120 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpt_cmp_ic_stat_yield()
122 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
123 cc::ellen_bintree::make_set_traits<
124 cc::ellen_bintree::key_extractor< key_extractor >
125 ,co::item_counter< cds::atomicity::item_counter >
126 ,co::stat< cc::ellen_bintree::stat<> >
127 ,co::compare< compare >
128 , co::back_off< cds::backoff::yield >
132 test_rcu<set_type, print_stat>();
135 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpt_less_pool()
137 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
138 cc::ellen_bintree::make_set_traits<
139 cc::ellen_bintree::key_extractor< key_extractor >
141 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_rcu::internal_node_pool_accessor > >
142 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_rcu::update_desc_pool_accessor > >
146 test_rcu<set_type, print_stat>();
149 void EllenBinTreeSetHdrTest::EllenBinTree_rcu_gpt_less_pool_ic_stat()
151 typedef cc::EllenBinTreeSet< rcu_type, key_type, value_type,
152 cc::ellen_bintree::make_set_traits<
153 cc::ellen_bintree::key_extractor< key_extractor >
155 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_rcu::internal_node_pool_accessor > >
156 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_rcu::update_desc_pool_accessor > >
157 ,co::item_counter< cds::atomicity::item_counter >
158 ,co::stat< cc::ellen_bintree::stat<> >
162 test_rcu<set_type, print_stat>();