Disables running some stat analysis for benchmarks & Adds some sequential data structures
[libcds.git] / test / stress / pqueue / pqueue_type.h
index 2728fa28e33fad46d59955fad48a995514f72bd4..2861064389e71e5c15d2cbf7a6deeb0b21b3d9db 100644 (file)
@@ -1,11 +1,11 @@
 /*
     This file is a part of libcds - Concurrent Data Structures library
 
-    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+    (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2017
 
     Source code repo: http://github.com/khizmax/libcds/
     Download: http://sourceforge.net/projects/libcds/files/
-    
+
     Redistribution and use in source and binary forms, with or without
     modification, are permitted provided that the following conditions are met:
 
@@ -35,7 +35,6 @@
 #include <cds/urcu/general_buffered.h>
 #include <cds/urcu/general_threaded.h>
 #include <cds/urcu/signal_buffered.h>
-#include <cds/urcu/signal_threaded.h>
 
 #include <cds/container/mspriority_queue.h>
 #include <cds/container/fcpriority_queue.h>
@@ -92,7 +91,7 @@ namespace pqueue {
             bool pop( value_type& dest )
             {
                 scoped_lock l( m_Lock );
-                if ( !m_PQueue.empty() ) {
+                if ( !m_PQueue.empty()) {
                     dest = m_PQueue.top();
                     m_PQueue.pop();
                     return true;
@@ -104,8 +103,8 @@ namespace pqueue {
             bool pop_with( Q& dest, MoveFunc f )
             {
                 scoped_lock l( m_Lock );
-                if ( !m_PQueue.empty() ) {
-                    f( dest, m_PQueue.top() );
+                if ( !m_PQueue.empty()) {
+                    f( dest, m_PQueue.top());
                     m_PQueue.pop();
                     return true;
                 }
@@ -115,7 +114,7 @@ namespace pqueue {
             void clear()
             {
                 scoped_lock l( m_Lock );
-                while ( !m_PQueue.empty() )
+                while ( !m_PQueue.empty())
                     m_PQueue.pop();
             }
 
@@ -123,19 +122,21 @@ namespace pqueue {
             void clear_with( Func f )
             {
                 scoped_lock l( m_Lock );
-                while ( !m_PQueue.empty() ) {
-                    f( m_PQueue.top() );
+                while ( !m_PQueue.empty()) {
+                    f( m_PQueue.top());
                     m_PQueue.pop();
                 }
             }
 
             bool empty() const
             {
+                scoped_lock l( m_Lock );
                 return m_PQueue.empty();
             }
 
             size_t size() const
             {
+                scoped_lock l( m_Lock );
                 return m_PQueue.size();
             }
 
@@ -152,7 +153,7 @@ namespace pqueue {
             template <typename T, typename Tree>
             bool operator()( T& dest, Tree& container ) const
             {
-                typename Tree::guarded_ptr gp( container.extract_max() );
+                typename Tree::guarded_ptr gp( container.extract_max());
                 if ( gp )
                     dest = *gp;
                 return !gp.empty();
@@ -165,7 +166,7 @@ namespace pqueue {
             template <typename T, typename Tree>
             bool operator()( T& dest, Tree& container ) const
             {
-                typename Tree::exempt_ptr ep( container.extract_max() );
+                typename Tree::exempt_ptr ep( container.extract_max());
                 if ( ep )
                     dest = *ep;
                 return !ep.empty();
@@ -178,7 +179,7 @@ namespace pqueue {
             template <typename T, typename Tree>
             bool operator()( T& dest, Tree& container ) const
             {
-                typename Tree::guarded_ptr gp( container.extract_min() );
+                typename Tree::guarded_ptr gp( container.extract_min());
                 if ( gp )
                     dest = *gp;
                 return !gp.empty();
@@ -191,7 +192,7 @@ namespace pqueue {
             template <typename T, typename Tree>
             bool operator()( T& dest, Tree& container ) const
             {
-                typename Tree::exempt_ptr ep( container.extract_min() );
+                typename Tree::exempt_ptr ep( container.extract_min());
                 if ( ep )
                     dest = *ep;
                 return !ep.empty();
@@ -248,7 +249,7 @@ namespace pqueue {
             template <typename T, typename Set>
             bool operator()( T& dest, Set& container ) const
             {
-                typename Set::guarded_ptr gp( container.extract_max() );
+                typename Set::guarded_ptr gp( container.extract_max());
                 if ( gp )
                     dest = *gp;
                 return !gp.empty();
@@ -261,7 +262,7 @@ namespace pqueue {
             template <typename T, typename Set>
             bool operator()( T& dest, Set& container ) const
             {
-                typename Set::exempt_ptr ep( container.extract_max() );
+                typename Set::exempt_ptr ep( container.extract_max());
                 if ( ep )
                     dest = *ep;
                 return !ep.empty();
@@ -274,7 +275,7 @@ namespace pqueue {
             template <typename T, typename Set>
             bool operator()( T& dest, Set& container ) const
             {
-                typename Set::guarded_ptr gp( container.extract_min() );
+                typename Set::guarded_ptr gp( container.extract_min());
                 if ( gp )
                     dest = *gp;
                 return !gp.empty();
@@ -287,7 +288,7 @@ namespace pqueue {
             template <typename T, typename Set>
             bool operator()( T& dest, Set& container ) const
             {
-                typename Set::exempt_ptr ep( container.extract_min() );
+                typename Set::exempt_ptr ep( container.extract_min());
                 if ( ep )
                     dest = *ep;
                 return !ep.empty();
@@ -357,7 +358,6 @@ namespace pqueue {
         typedef cds::urcu::gc< cds::urcu::general_threaded<> >  rcu_gpt;
 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
         typedef cds::urcu::gc< cds::urcu::signal_buffered<> >  rcu_shb;
-        typedef cds::urcu::gc< cds::urcu::signal_threaded<> >  rcu_sht;
 #endif
 
 
@@ -437,7 +437,6 @@ namespace pqueue {
         typedef details::EllenBinTreePQueue< rcu_gpt, typename Value::key_type, Value, traits_EllenBinTree_max > EllenBinTree_RCU_gpt_max;
 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
         typedef details::EllenBinTreePQueue< rcu_shb, typename Value::key_type, Value, traits_EllenBinTree_max > EllenBinTree_RCU_shb_max;
-        typedef details::EllenBinTreePQueue< rcu_sht, typename Value::key_type, Value, traits_EllenBinTree_max > EllenBinTree_RCU_sht_max;
 #endif
 
         struct traits_EllenBinTree_max_stat :
@@ -454,7 +453,6 @@ namespace pqueue {
         typedef details::EllenBinTreePQueue< rcu_gpt, typename Value::key_type, Value, traits_EllenBinTree_max_stat > EllenBinTree_RCU_gpt_max_stat;
 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
         typedef details::EllenBinTreePQueue< rcu_shb, typename Value::key_type, Value, traits_EllenBinTree_max_stat > EllenBinTree_RCU_shb_max_stat;
-        typedef details::EllenBinTreePQueue< rcu_sht, typename Value::key_type, Value, traits_EllenBinTree_max_stat > EllenBinTree_RCU_sht_max_stat;
 #endif
 
         struct traits_EllenBinTree_min :
@@ -470,7 +468,6 @@ namespace pqueue {
         typedef details::EllenBinTreePQueue< rcu_gpt, typename Value::key_type, Value, traits_EllenBinTree_min, false > EllenBinTree_RCU_gpt_min;
 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
         typedef details::EllenBinTreePQueue< rcu_shb, typename Value::key_type, Value, traits_EllenBinTree_min, false > EllenBinTree_RCU_shb_min;
-        typedef details::EllenBinTreePQueue< rcu_sht, typename Value::key_type, Value, traits_EllenBinTree_min, false > EllenBinTree_RCU_sht_min;
 #endif
 
         struct traits_EllenBinTree_min_stat :
@@ -487,23 +484,47 @@ namespace pqueue {
         typedef details::EllenBinTreePQueue< rcu_gpt, typename Value::key_type, Value, traits_EllenBinTree_min_stat, false > EllenBinTree_RCU_gpt_min_stat;
 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
         typedef details::EllenBinTreePQueue< rcu_shb, typename Value::key_type, Value, traits_EllenBinTree_min_stat, false > EllenBinTree_RCU_shb_min_stat;
-        typedef details::EllenBinTreePQueue< rcu_sht, typename Value::key_type, Value, traits_EllenBinTree_min_stat, false > EllenBinTree_RCU_sht_min_stat;
 #endif
 
         // Priority queue based on SkipListSet
         struct traits_SkipList_max :
             public cc::skip_list::make_traits <
-            cc::opt::less < std::less<Value> >
+                cc::opt::less < std::less<Value> >
             > ::type
         {};
-        typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList_max > SkipList_HP_max;
-        typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList_max > SkipList_DHP_max;
-        typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList_max > SkipList_RCU_gpi_max;
-        typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList_max > SkipList_RCU_gpb_max;
-        typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_max > SkipList_RCU_gpt_max;
+        typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList_max > SkipList32_HP_max;
+        typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList_max > SkipList32_DHP_max;
+        typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList_max > SkipList32_RCU_gpi_max;
+        typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList_max > SkipList32_RCU_gpb_max;
+        typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_max > SkipList32_RCU_gpt_max;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_max > SkipList32_RCU_shb_max;
+#endif
+
+        struct traits_SkipList24_max: public traits_SkipList_max
+        {
+            typedef cc::skip_list::turbo24 random_level_generator;
+        };
+        typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList24_max > SkipList24_HP_max;
+        typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList24_max > SkipList24_DHP_max;
+        typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList24_max > SkipList24_RCU_gpi_max;
+        typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList24_max > SkipList24_RCU_gpb_max;
+        typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList24_max > SkipList24_RCU_gpt_max;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList24_max > SkipList24_RCU_shb_max;
+#endif
+
+        struct traits_SkipList16_max: public traits_SkipList_max
+        {
+            typedef cc::skip_list::turbo16 random_level_generator;
+        };
+        typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList16_max > SkipList16_HP_max;
+        typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList16_max > SkipList16_DHP_max;
+        typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList16_max > SkipList16_RCU_gpi_max;
+        typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList16_max > SkipList16_RCU_gpb_max;
+        typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList16_max > SkipList16_RCU_gpt_max;
 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-        typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_max > SkipList_RCU_shb_max;
-        typedef details::SkipListPQueue< rcu_sht, Value, traits_SkipList_max > SkipList_RCU_sht_max;
+        typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList16_max > SkipList16_RCU_shb_max;
 #endif
 
         struct traits_SkipList_max_stat :
@@ -512,14 +533,39 @@ namespace pqueue {
                 ,co::stat< cc::skip_list::stat<> >
             >::type
         {};
-        typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList_max_stat > SkipList_HP_max_stat;
-        typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList_max_stat > SkipList_DHP_max_stat;
-        typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList_max_stat > SkipList_RCU_gpi_max_stat;
-        typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList_max_stat > SkipList_RCU_gpb_max_stat;
-        typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_max_stat > SkipList_RCU_gpt_max_stat;
+        typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList_max_stat > SkipList32_HP_max_stat;
+        typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList_max_stat > SkipList32_DHP_max_stat;
+        typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList_max_stat > SkipList32_RCU_gpi_max_stat;
+        typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList_max_stat > SkipList32_RCU_gpb_max_stat;
+        typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_max_stat > SkipList32_RCU_gpt_max_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_max_stat > SkipList32_RCU_shb_max_stat;
+#endif
+
+        struct traits_SkipList24_max_stat: public traits_SkipList_max_stat
+        {
+            typedef cc::skip_list::turbo24 random_level_generator;
+        };
+        typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList24_max_stat > SkipList24_HP_max_stat;
+        typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList24_max_stat > SkipList24_DHP_max_stat;
+        typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList24_max_stat > SkipList24_RCU_gpi_max_stat;
+        typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList24_max_stat > SkipList24_RCU_gpb_max_stat;
+        typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList24_max_stat > SkipList24_RCU_gpt_max_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList24_max_stat > SkipList24_RCU_shb_max_stat;
+#endif
+
+        struct traits_SkipList16_max_stat: public traits_SkipList_max_stat
+        {
+            typedef cc::skip_list::turbo16 random_level_generator;
+        };
+        typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList16_max_stat > SkipList16_HP_max_stat;
+        typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList16_max_stat > SkipList16_DHP_max_stat;
+        typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList16_max_stat > SkipList16_RCU_gpi_max_stat;
+        typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList16_max_stat > SkipList16_RCU_gpb_max_stat;
+        typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList16_max_stat > SkipList16_RCU_gpt_max_stat;
 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-        typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_max_stat > SkipList_RCU_shb_max_stat;
-        typedef details::SkipListPQueue< rcu_sht, Value, traits_SkipList_max_stat > SkipList_RCU_sht_max_stat;
+        typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList16_max_stat > SkipList16_RCU_shb_max_stat;
 #endif
 
         struct traits_SkipList_min :
@@ -527,14 +573,39 @@ namespace pqueue {
                 cc::opt::less< std::greater<Value> >
             >::type
         {};
-        typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList_min, false > SkipList_HP_min;
-        typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList_min, false > SkipList_DHP_min;
-        typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList_min, false > SkipList_RCU_gpi_min;
-        typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList_min, false > SkipList_RCU_gpb_min;
-        typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_min, false > SkipList_RCU_gpt_min;
+        typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList_min, false > SkipList32_HP_min;
+        typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList_min, false > SkipList32_DHP_min;
+        typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList_min, false > SkipList32_RCU_gpi_min;
+        typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList_min, false > SkipList32_RCU_gpb_min;
+        typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_min, false > SkipList32_RCU_gpt_min;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_min, false > SkipList32_RCU_shb_min;
+#endif
+
+        struct traits_SkipList24_min: public traits_SkipList_min
+        {
+            typedef cc::skip_list::turbo24 random_level_generator;
+        };
+        typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList24_min > SkipList24_HP_min;
+        typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList24_min > SkipList24_DHP_min;
+        typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList24_min > SkipList24_RCU_gpi_min;
+        typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList24_min > SkipList24_RCU_gpb_min;
+        typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList24_min > SkipList24_RCU_gpt_min;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList24_min > SkipList24_RCU_shb_min;
+#endif
+
+        struct traits_SkipList16_min: public traits_SkipList_min
+        {
+            typedef cc::skip_list::turbo16 random_level_generator;
+        };
+        typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList16_min > SkipList16_HP_min;
+        typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList16_min > SkipList16_DHP_min;
+        typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList16_min > SkipList16_RCU_gpi_min;
+        typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList16_min > SkipList16_RCU_gpb_min;
+        typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList16_min > SkipList16_RCU_gpt_min;
 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-        typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_min, false > SkipList_RCU_shb_min;
-        typedef details::SkipListPQueue< rcu_sht, Value, traits_SkipList_min, false > SkipList_RCU_sht_min;
+        typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList16_min > SkipList16_RCU_shb_min;
 #endif
 
         struct traits_SkipList_min_stat :
@@ -543,14 +614,39 @@ namespace pqueue {
                 ,co::stat< cc::skip_list::stat<> >
             >::type
         {};
-        typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList_min_stat, false > SkipList_HP_min_stat;
-        typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList_min_stat, false > SkipList_DHP_min_stat;
-        typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList_min_stat, false > SkipList_RCU_gpi_min_stat;
-        typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList_min_stat, false > SkipList_RCU_gpb_min_stat;
-        typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_min_stat, false > SkipList_RCU_gpt_min_stat;
+        typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList_min_stat, false > SkipList32_HP_min_stat;
+        typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList_min_stat, false > SkipList32_DHP_min_stat;
+        typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList_min_stat, false > SkipList32_RCU_gpi_min_stat;
+        typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList_min_stat, false > SkipList32_RCU_gpb_min_stat;
+        typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_min_stat, false > SkipList32_RCU_gpt_min_stat;
 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-        typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_min_stat, false > SkipList_RCU_shb_min_stat;
-        typedef details::SkipListPQueue< rcu_sht, Value, traits_SkipList_min_stat, false > SkipList_RCU_sht_min_stat;
+        typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_min_stat, false > SkipList32_RCU_shb_min_stat;
+#endif
+
+        struct traits_SkipList24_min_stat: public traits_SkipList_min_stat
+        {
+            typedef cc::skip_list::turbo24 random_level_generator;
+        };
+        typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList24_min_stat > SkipList24_HP_min_stat;
+        typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList24_min_stat > SkipList24_DHP_min_stat;
+        typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList24_min_stat > SkipList24_RCU_gpi_min_stat;
+        typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList24_min_stat > SkipList24_RCU_gpb_min_stat;
+        typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList24_min_stat > SkipList24_RCU_gpt_min_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList24_min_stat > SkipList24_RCU_shb_min_stat;
+#endif
+
+        struct traits_SkipList16_min_stat: public traits_SkipList_min_stat
+        {
+            typedef cc::skip_list::turbo16 random_level_generator;
+        };
+        typedef details::SkipListPQueue< cds::gc::HP, Value, traits_SkipList16_min_stat > SkipList16_HP_min_stat;
+        typedef details::SkipListPQueue< cds::gc::DHP, Value, traits_SkipList16_min_stat > SkipList16_DHP_min_stat;
+        typedef details::SkipListPQueue< rcu_gpi, Value, traits_SkipList16_min_stat > SkipList16_RCU_gpi_min_stat;
+        typedef details::SkipListPQueue< rcu_gpb, Value, traits_SkipList16_min_stat > SkipList16_RCU_gpb_min_stat;
+        typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList16_min_stat > SkipList16_RCU_gpt_min_stat;
+#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+        typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList16_min_stat > SkipList16_RCU_shb_min_stat;
 #endif
 
 
@@ -617,7 +713,7 @@ namespace cds_test {
 
     static inline property_stream& operator <<( property_stream& o, cds::container::fcpqueue::stat<> const& s )
     {
-        return o 
+        return o
             << CDSSTRESS_STAT_OUT( s, m_nPush )
             << CDSSTRESS_STAT_OUT( s, m_nPushMove )
             << CDSSTRESS_STAT_OUT( s, m_nPop )