3 #include "tree/hdr_bronson_avltree_map.h"
4 #include <cds/urcu/general_buffered.h>
5 #include <cds/container/bronson_avltree_map_rcu.h>
6 #include <cds/sync/pool_monitor.h>
7 #include <cds/memory/vyukov_queue_pool.h>
9 #include "unit/print_bronsonavltree_stat.h"
10 #include "unit/print_sync_monitor_stat.h"
13 namespace cc = cds::container;
14 namespace co = cds::opt;
16 typedef cds::urcu::gc< cds::urcu::general_buffered<> > rcu_type;
19 template <typename Tree>
20 void operator()( Tree const& t ) const
22 std::cout << t.statistics();
23 std::cout << t.monitor().statistics();
27 typedef cds::memory::vyukov_queue_pool< std::mutex > simple_pool;
28 typedef cds::memory::lazy_vyukov_queue_pool< std::mutex > lazy_pool;
29 typedef cds::memory::bounded_vyukov_queue_pool< std::mutex > bounded_pool;
32 void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpb_pool_monitor_less()
35 cc::bronson_avltree::make_traits<
36 co::less< std::less<key_type> >
37 ,co::sync_monitor< cds::sync::pool_monitor<simple_pool> >
40 typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
41 test<map_type, print_stat>();
44 void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpb_pool_monitor_less_stat()
47 cc::bronson_avltree::make_traits<
48 co::less< std::less<key_type> >
49 ,co::stat< cc::bronson_avltree::stat<> >
50 ,co::sync_monitor< cds::sync::pool_monitor<lazy_pool, cds::opt::none, true >>
51 ,cc::bronson_avltree::relaxed_insert< false >
54 typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
55 test<map_type, print_stat>();
58 void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpb_pool_monitor_cmp_ic_stat()
61 cc::bronson_avltree::make_traits<
62 co::compare< compare >
63 ,co::item_counter< cds::atomicity::item_counter >
64 ,co::stat< cc::bronson_avltree::stat<> >
65 ,co::sync_monitor< cds::sync::pool_monitor<bounded_pool, cds::opt::none, true >>
68 typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
69 test<map_type, print_stat>();
72 void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpb_pool_monitor_cmp_ic_stat_yield()
75 cc::bronson_avltree::make_traits<
76 co::compare< compare >
77 ,co::item_counter< cds::atomicity::item_counter >
78 ,co::stat< cc::bronson_avltree::stat<> >
79 ,co::back_off< cds::backoff::yield >
80 ,co::sync_monitor< cds::sync::pool_monitor<lazy_pool, cds::opt::none, true >>
83 typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
84 test<map_type, print_stat>();
87 void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpb_pool_monitor_less_relaxed_insert()
90 cc::bronson_avltree::make_traits<
91 co::less< std::less<key_type> >
92 ,cc::bronson_avltree::relaxed_insert< true >
93 ,co::sync_monitor< cds::sync::pool_monitor<lazy_pool> >
96 typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
97 test<map_type, print_stat>();
100 void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpb_pool_monitor_less_relaxed_insert_stat()
102 struct traits: public
103 cc::bronson_avltree::make_traits<
104 co::less< std::less<key_type> >
105 ,co::stat< cc::bronson_avltree::stat<> >
106 ,cc::bronson_avltree::relaxed_insert< true >
107 ,co::sync_monitor< cds::sync::pool_monitor<simple_pool, cds::opt::none, true >>
110 typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
111 test<map_type, print_stat>();