3 #include "set/hdr_intrusive_skiplist_set_rcu.h"
5 #include <cds/urcu/general_threaded.h>
6 #include <cds/intrusive/skip_list_rcu.h>
7 #include "map/print_skiplist_stat.h"
11 typedef cds::urcu::gc< cds::urcu::general_threaded<> > rcu_type;
14 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_base_cmp()
16 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
18 typedef ci::SkipListSet< rcu_type, item,
19 ci::skip_list::make_traits<
20 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
21 ,co::compare< cmp<item> >
22 ,ci::opt::disposer< faked_disposer >
23 ,co::item_counter< cds::atomicity::item_counter >
27 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
30 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_base_less()
32 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
34 typedef ci::SkipListSet< rcu_type, item,
35 ci::skip_list::make_traits<
36 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
37 ,co::less< less<item> >
38 ,ci::opt::disposer< faked_disposer >
39 ,co::item_counter< cds::atomicity::item_counter >
43 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
46 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_base_cmpmix()
48 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
50 typedef ci::SkipListSet< rcu_type, item,
51 ci::skip_list::make_traits<
52 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
53 ,co::less< less<item> >
54 ,ci::opt::disposer< faked_disposer >
55 ,co::item_counter< cds::atomicity::item_counter >
56 ,co::compare< cmp<item> >
60 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
63 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_base_cmp_stat()
65 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
67 typedef ci::SkipListSet< rcu_type, item,
68 ci::skip_list::make_traits<
69 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
70 ,co::compare< cmp<item> >
71 ,ci::opt::disposer< faked_disposer >
72 ,co::stat< ci::skip_list::stat<> >
73 ,co::item_counter< cds::atomicity::item_counter >
77 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
80 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_base_less_stat()
82 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
84 typedef ci::SkipListSet< rcu_type, item,
85 ci::skip_list::make_traits<
86 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
87 ,co::less< less<item> >
88 ,co::item_counter< cds::atomicity::item_counter >
89 ,ci::opt::disposer< faked_disposer >
90 ,co::stat< ci::skip_list::stat<> >
94 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
97 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_base_cmpmix_stat()
99 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
101 typedef ci::SkipListSet< rcu_type, item,
102 ci::skip_list::make_traits<
103 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
104 ,co::less< less<item> >
105 ,ci::opt::disposer< faked_disposer >
106 ,co::compare< cmp<item> >
107 ,co::stat< ci::skip_list::stat<> >
108 ,co::item_counter< cds::atomicity::item_counter >
112 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
115 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_base_cmp_xorshift()
117 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
119 typedef ci::SkipListSet< rcu_type, item,
120 ci::skip_list::make_traits<
121 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
122 ,co::compare< cmp<item> >
123 ,co::item_counter< cds::atomicity::item_counter >
124 ,ci::opt::disposer< faked_disposer >
125 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
129 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
132 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_base_less_xorshift()
134 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
136 typedef ci::SkipListSet< rcu_type, item,
137 ci::skip_list::make_traits<
138 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
139 ,co::less< less<item> >
140 ,ci::opt::disposer< faked_disposer >
141 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
142 ,co::item_counter< cds::atomicity::item_counter >
146 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
149 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_base_cmpmix_xorshift()
151 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
153 typedef ci::SkipListSet< rcu_type, item,
154 ci::skip_list::make_traits<
155 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
156 ,co::less< less<item> >
157 ,ci::opt::disposer< faked_disposer >
158 ,co::compare< cmp<item> >
159 ,co::item_counter< cds::atomicity::item_counter >
160 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
164 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
167 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_base_cmp_xorshift_stat()
169 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
171 typedef ci::SkipListSet< rcu_type, item,
172 ci::skip_list::make_traits<
173 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
174 ,co::compare< cmp<item> >
175 ,co::item_counter< cds::atomicity::item_counter >
176 ,ci::opt::disposer< faked_disposer >
177 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
178 ,co::stat< ci::skip_list::stat<> >
182 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
185 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_base_less_xorshift_stat()
187 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
189 typedef ci::SkipListSet< rcu_type, item,
190 ci::skip_list::make_traits<
191 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
192 ,co::less< less<item> >
193 ,ci::opt::disposer< faked_disposer >
194 ,co::item_counter< cds::atomicity::item_counter >
195 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
196 ,co::stat< ci::skip_list::stat<> >
200 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
203 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_base_cmpmix_xorshift_stat()
205 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
207 typedef ci::SkipListSet< rcu_type, item,
208 ci::skip_list::make_traits<
209 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
210 ,co::less< less<item> >
211 ,co::item_counter< cds::atomicity::item_counter >
212 ,ci::opt::disposer< faked_disposer >
213 ,co::compare< cmp<item> >
214 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
215 ,co::stat< ci::skip_list::stat<> >
219 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
224 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_base_cmp_pascal()
226 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
228 typedef ci::SkipListSet< rcu_type, item,
229 ci::skip_list::make_traits<
230 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
231 ,co::compare< cmp<item> >
232 ,co::item_counter< cds::atomicity::item_counter >
233 ,ci::opt::disposer< faked_disposer >
234 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
238 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
241 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_base_less_pascal()
243 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
245 typedef ci::SkipListSet< rcu_type, item,
246 ci::skip_list::make_traits<
247 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
248 ,co::less< less<item> >
249 ,co::item_counter< cds::atomicity::item_counter >
250 ,ci::opt::disposer< faked_disposer >
251 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
255 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
258 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_base_cmpmix_pascal()
260 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
262 typedef ci::SkipListSet< rcu_type, item,
263 ci::skip_list::make_traits<
264 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
265 ,co::less< less<item> >
266 ,ci::opt::disposer< faked_disposer >
267 ,co::compare< cmp<item> >
268 ,co::item_counter< cds::atomicity::item_counter >
269 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
273 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
276 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_base_cmp_pascal_stat()
278 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
280 typedef ci::SkipListSet< rcu_type, item,
281 ci::skip_list::make_traits<
282 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
283 ,co::compare< cmp<item> >
284 ,ci::opt::disposer< faked_disposer >
285 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
286 ,co::stat< ci::skip_list::stat<> >
287 ,co::item_counter< cds::atomicity::item_counter >
291 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
294 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_base_less_pascal_stat()
296 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
298 typedef ci::SkipListSet< rcu_type, item,
299 ci::skip_list::make_traits<
300 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
301 ,co::less< less<item> >
302 ,ci::opt::disposer< faked_disposer >
303 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
304 ,co::stat< ci::skip_list::stat<> >
305 ,co::item_counter< cds::atomicity::item_counter >
309 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
312 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_base_cmpmix_pascal_stat()
314 typedef base_int_item< ci::skip_list::node< rcu_type> > item;
316 typedef ci::SkipListSet< rcu_type, item,
317 ci::skip_list::make_traits<
318 ci::opt::hook< ci::skip_list::base_hook< co::gc<rcu_type> > >
319 ,co::less< less<item> >
320 ,ci::opt::disposer< faked_disposer >
321 ,co::compare< cmp<item> >
322 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
323 ,co::stat< ci::skip_list::stat<> >
324 ,co::item_counter< cds::atomicity::item_counter >
328 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();