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_member_cmp()
16 typedef member_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::member_hook< offsetof(item, hMember), 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_member_less()
32 typedef member_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::member_hook< offsetof(item, hMember), 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_member_cmpmix()
48 typedef member_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::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
53 ,co::less< less<item> >
54 ,ci::opt::disposer< faked_disposer >
55 ,co::compare< cmp<item> >
56 ,co::item_counter< cds::atomicity::item_counter >
60 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
63 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_member_cmp_stat()
65 typedef member_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::member_hook< offsetof(item, hMember), 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_member_less_stat()
82 typedef member_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::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
87 ,co::less< less<item> >
88 ,ci::opt::disposer< faked_disposer >
89 ,co::stat< ci::skip_list::stat<> >
90 ,co::item_counter< cds::atomicity::item_counter >
94 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
97 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_member_cmpmix_stat()
99 typedef member_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::member_hook< offsetof(item, hMember), 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_member_cmp_xorshift()
117 typedef member_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::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
122 ,co::compare< cmp<item> >
123 ,ci::opt::disposer< faked_disposer >
124 ,co::item_counter< cds::atomicity::item_counter >
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_member_less_xorshift()
134 typedef member_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::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
139 ,co::less< less<item> >
140 ,ci::opt::disposer< faked_disposer >
141 ,co::item_counter< cds::atomicity::item_counter >
142 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
146 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
149 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_member_cmpmix_xorshift()
151 typedef member_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::member_hook< offsetof(item, hMember), 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_member_cmp_xorshift_stat()
169 typedef member_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::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
174 ,co::compare< cmp<item> >
175 ,ci::opt::disposer< faked_disposer >
176 ,co::item_counter< cds::atomicity::item_counter >
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_member_less_xorshift_stat()
187 typedef member_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::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
192 ,co::less< less<item> >
193 ,ci::opt::disposer< faked_disposer >
194 ,ci::skip_list::random_level_generator< ci::skip_list::xorshift >
195 ,co::stat< ci::skip_list::stat<> >
196 ,co::item_counter< cds::atomicity::item_counter >
200 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
203 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_member_cmpmix_xorshift_stat()
205 typedef member_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::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
210 ,co::less< less<item> >
211 ,ci::opt::disposer< faked_disposer >
212 ,co::compare< cmp<item> >
213 ,co::item_counter< cds::atomicity::item_counter >
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> >();
223 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_member_cmp_pascal()
225 typedef member_int_item< ci::skip_list::node< rcu_type> > item;
227 typedef ci::SkipListSet< rcu_type, item,
228 ci::skip_list::make_traits<
229 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
230 ,co::compare< cmp<item> >
231 ,ci::opt::disposer< faked_disposer >
232 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
233 ,co::item_counter< cds::atomicity::item_counter >
237 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
240 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_member_less_pascal()
242 typedef member_int_item< ci::skip_list::node< rcu_type> > item;
244 typedef ci::SkipListSet< rcu_type, item,
245 ci::skip_list::make_traits<
246 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
247 ,co::less< less<item> >
248 ,ci::opt::disposer< faked_disposer >
249 ,co::item_counter< cds::atomicity::item_counter >
250 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
254 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
257 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_member_cmpmix_pascal()
259 typedef member_int_item< ci::skip_list::node< rcu_type> > item;
261 typedef ci::SkipListSet< rcu_type, item,
262 ci::skip_list::make_traits<
263 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
264 ,co::less< less<item> >
265 ,ci::opt::disposer< faked_disposer >
266 ,co::compare< cmp<item> >
267 ,co::item_counter< cds::atomicity::item_counter >
268 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
272 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
275 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_member_cmp_pascal_stat()
277 typedef member_int_item< ci::skip_list::node< rcu_type> > item;
279 typedef ci::SkipListSet< rcu_type, item,
280 ci::skip_list::make_traits<
281 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
282 ,co::compare< cmp<item> >
283 ,ci::opt::disposer< faked_disposer >
284 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
285 ,co::stat< ci::skip_list::stat<> >
286 ,co::item_counter< cds::atomicity::item_counter >
290 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
293 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_member_less_pascal_stat()
295 typedef member_int_item< ci::skip_list::node< rcu_type> > item;
297 typedef ci::SkipListSet< rcu_type, item,
298 ci::skip_list::make_traits<
299 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
300 ,co::less< less<item> >
301 ,ci::opt::disposer< faked_disposer >
302 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
303 ,co::stat< ci::skip_list::stat<> >
304 ,co::item_counter< cds::atomicity::item_counter >
308 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();
311 void IntrusiveSkipListSetRCU::skiplist_rcu_gpt_member_cmpmix_pascal_stat()
313 typedef member_int_item< ci::skip_list::node< rcu_type> > item;
315 typedef ci::SkipListSet< rcu_type, item,
316 ci::skip_list::make_traits<
317 ci::opt::hook< ci::skip_list::member_hook< offsetof(item, hMember), co::gc<rcu_type> > >
318 ,co::less< less<item> >
319 ,ci::opt::disposer< faked_disposer >
320 ,co::compare< cmp<item> >
321 ,ci::skip_list::random_level_generator< ci::skip_list::turbo_pascal >
322 ,co::stat< ci::skip_list::stat<> >
323 ,co::item_counter< cds::atomicity::item_counter >
327 test_skiplist<set_type, misc::print_skiplist_stat<set_type::stat> >();