From: khizmax Date: Thu, 30 Oct 2014 21:40:46 +0000 (+0300) Subject: Normalized split-list set types in unit-set tests X-Git-Tag: v2.0.0~157 X-Git-Url: http://plrg.eecs.uci.edu/git/?p=libcds.git;a=commitdiff_plain;h=f98b17ed57f2124e4b98b124988c73a4e12808b5 Normalized split-list set types in unit-set tests --- diff --git a/projects/Win/vc12/cds.sln b/projects/Win/vc12/cds.sln index 947633d0..aabc38a0 100644 --- a/projects/Win/vc12/cds.sln +++ b/projects/Win/vc12/cds.sln @@ -11,6 +11,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "unit-test", "unit-test", "{ ..\..\..\tests\unit\print_mspriorityqueue_stat.h = ..\..\..\tests\unit\print_mspriorityqueue_stat.h ..\..\..\tests\unit\print_segmentedqueue_stat.h = ..\..\..\tests\unit\print_segmentedqueue_stat.h ..\..\..\tests\unit\print_skip_list_stat.h = ..\..\..\tests\unit\print_skip_list_stat.h + ..\..\..\tests\unit\print_split_list_stat.h = ..\..\..\tests\unit\print_split_list_stat.h EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unit-prerequisites", "unit-prerequisites.vcxproj", "{61179F2F-07E1-490D-B64D-D85A90B6EF81}" diff --git a/tests/unit/print_split_list_stat.h b/tests/unit/print_split_list_stat.h new file mode 100644 index 00000000..94b7530f --- /dev/null +++ b/tests/unit/print_split_list_stat.h @@ -0,0 +1,39 @@ +//$$CDS-header$$ + +#ifndef __UNIT_PRINT_SPLIT_LIST_STAT_H +#define __UNIT_PRINT_SPLIT_LIST_STAT_H + +#include +#include + +namespace std { + + static inline ostream& operator <<( ostream& o, cds::intrusive::split_list::stat<> const& s ) + { + return + o << "Split-list stat [cds::intrusive::split_list::stat]\n" + << "\t\t m_nInsertSuccess: " << s.m_nInsertSuccess.get() << "\n" + << "\t\t m_nInsertFailed: " << s.m_nInsertFailed.get() << "\n" + << "\t\t m_nEnsureExist: " << s.m_nEnsureExist.get() << "\n" + << "\t\t m_nEnsureNew: " << s.m_nEnsureNew.get() << "\n" + << "\t\t m_nEraseSuccess: " << s.m_nEraseSuccess.get() << "\n" + << "\t\t m_nEraseFailed: " << s.m_nEraseFailed.get() << "\n" + << "\t\t m_nExtractSuccess: " << s.m_nExtractSuccess.get() << "\n" + << "\t\t m_nExtractFailed: " << s.m_nExtractFailed.get() << "\n" + << "\t\t m_nFindSuccess: " << s.m_nFindSuccess.get() << "\n" + << "\t\t m_nHeadNodeAllocated: " << s.m_nHeadNodeAllocated.get() << "\n" + << "\t\t m_nHeadNodeFreed: " << s.m_nHeadNodeFreed.get() << "\n" + << "\t\t m_nBucketCount: " << s.m_nBucketCount.get() << "\n" + << "\t\t m_nInitBucketRecursive: " << s.m_nInitBucketRecursive.get() << "\n" + << "\t\t m_nInitBucketContention: " << s.m_nInitBucketContention.get() << "\n" + << "\t\t m_nBusyWaitBucketInit: " << s.m_nBusyWaitBucketInit.get() << "\n"; + } + + static inline ostream& operator <<( ostream& o, cds::intrusive::split_list::empty_stat const& s ) + { + return o; + } + +} // namespace std + +#endif // #ifndef __UNIT_PRINT_SKIP_LIST_STAT_H diff --git a/tests/unit/set2/set_defs.h b/tests/unit/set2/set_defs.h index 15bf480e..05451a41 100644 --- a/tests/unit/set2/set_defs.h +++ b/tests/unit/set2/set_defs.h @@ -86,39 +86,55 @@ #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED # define CDSUNIT_DECLARE_SplitList_RCU_signal \ TEST_SET_EXTRACT(SplitList_Michael_RCU_SHB_dyn_cmp)\ + TEST_SET_EXTRACT(SplitList_Michael_RCU_SHB_dyn_cmp_stat)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_SHB_st_cmp)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_SHB_dyn_less)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_SHB_st_less)\ + TEST_SET_EXTRACT(SplitList_Michael_RCU_SHB_st_less_stat)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_SHT_dyn_cmp)\ + TEST_SET_EXTRACT(SplitList_Michael_RCU_SHT_dyn_cmp_stat)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_SHT_st_cmp)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_SHT_dyn_less)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_SHT_st_less)\ + TEST_SET_EXTRACT(SplitList_Michael_RCU_SHT_st_less_stat)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHB_dyn_cmp)\ + TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHB_dyn_cmp_stat)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHB_st_cmp)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHB_dyn_less)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHB_st_less)\ + TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHB_st_less_stat)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHT_dyn_cmp)\ + TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHT_dyn_cmp_stat)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHT_st_cmp)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHT_dyn_less)\ - TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHT_st_less) + TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHT_st_less)\ + TEST_SET_EXTRACT(SplitList_Lazy_RCU_SHT_st_less_stat) # define CDSUNIT_TEST_SplitList_RCU_signal \ CPPUNIT_TEST(SplitList_Michael_RCU_SHB_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Michael_RCU_SHB_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Michael_RCU_SHB_st_cmp)\ CPPUNIT_TEST(SplitList_Michael_RCU_SHB_dyn_less)\ CPPUNIT_TEST(SplitList_Michael_RCU_SHB_st_less)\ + CPPUNIT_TEST(SplitList_Michael_RCU_SHB_st_less_stat)\ CPPUNIT_TEST(SplitList_Michael_RCU_SHT_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Michael_RCU_SHT_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Michael_RCU_SHT_st_cmp)\ CPPUNIT_TEST(SplitList_Michael_RCU_SHT_dyn_less)\ CPPUNIT_TEST(SplitList_Michael_RCU_SHT_st_less)\ + CPPUNIT_TEST(SplitList_Michael_RCU_SHT_st_less_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_st_cmp)\ CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_dyn_less)\ CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_st_less)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_st_less_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_st_cmp)\ CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_dyn_less)\ - CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_st_less) + CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_st_less)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_st_less_stat) #else # define CDSUNIT_DECLARE_SplitList_RCU_signal @@ -127,88 +143,128 @@ #define CDSUNIT_DECLARE_SplitList \ TEST_SET_EXTRACT(SplitList_Michael_HP_dyn_cmp)\ + TEST_SET_EXTRACT(SplitList_Michael_HP_dyn_cmp_stat)\ TEST_SET_EXTRACT(SplitList_Michael_HP_st_cmp)\ TEST_SET_EXTRACT(SplitList_Michael_HP_dyn_less)\ TEST_SET_EXTRACT(SplitList_Michael_HP_st_less)\ + TEST_SET_EXTRACT(SplitList_Michael_HP_st_less_stat)\ TEST_SET_EXTRACT(SplitList_Michael_DHP_dyn_cmp)\ + TEST_SET_EXTRACT(SplitList_Michael_DHP_dyn_cmp_stat)\ TEST_SET_EXTRACT(SplitList_Michael_DHP_st_cmp)\ TEST_SET_EXTRACT(SplitList_Michael_DHP_dyn_less)\ TEST_SET_EXTRACT(SplitList_Michael_DHP_st_less)\ + TEST_SET_EXTRACT(SplitList_Michael_DHP_st_less_stat)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_GPI_dyn_cmp)\ + TEST_SET_EXTRACT(SplitList_Michael_RCU_GPI_dyn_cmp_stat)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_GPI_st_cmp)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_GPI_dyn_less)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_GPI_st_less)\ + TEST_SET_EXTRACT(SplitList_Michael_RCU_GPI_st_less_stat)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_GPB_dyn_cmp)\ + TEST_SET_EXTRACT(SplitList_Michael_RCU_GPB_dyn_cmp_stat)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_GPB_st_cmp)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_GPB_dyn_less)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_GPB_st_less)\ + TEST_SET_EXTRACT(SplitList_Michael_RCU_GPB_st_less_stat)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_GPT_dyn_cmp)\ + TEST_SET_EXTRACT(SplitList_Michael_RCU_GPT_dyn_cmp_stat)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_GPT_st_cmp)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_GPT_dyn_less)\ TEST_SET_EXTRACT(SplitList_Michael_RCU_GPT_st_less)\ + TEST_SET_EXTRACT(SplitList_Michael_RCU_GPT_st_less_stat)\ TEST_SET_EXTRACT(SplitList_Lazy_HP_dyn_cmp)\ + TEST_SET_EXTRACT(SplitList_Lazy_HP_dyn_cmp_stat)\ TEST_SET_EXTRACT(SplitList_Lazy_HP_st_cmp)\ TEST_SET_EXTRACT(SplitList_Lazy_HP_dyn_less)\ TEST_SET_EXTRACT(SplitList_Lazy_HP_st_less)\ + TEST_SET_EXTRACT(SplitList_Lazy_HP_st_less_stat)\ TEST_SET_EXTRACT(SplitList_Lazy_DHP_dyn_cmp)\ + TEST_SET_EXTRACT(SplitList_Lazy_DHP_dyn_cmp_stat)\ TEST_SET_EXTRACT(SplitList_Lazy_DHP_st_cmp)\ TEST_SET_EXTRACT(SplitList_Lazy_DHP_dyn_less)\ TEST_SET_EXTRACT(SplitList_Lazy_DHP_st_less)\ + TEST_SET_EXTRACT(SplitList_Lazy_DHP_st_less_stat)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPI_dyn_cmp)\ + TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPI_dyn_cmp_stat)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPI_st_cmp)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPI_dyn_less)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPI_st_less)\ + TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPI_st_less_stat)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPB_dyn_cmp)\ + TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPB_dyn_cmp_stat)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPB_st_cmp)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPB_dyn_less)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPB_st_less)\ + TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPB_st_less_stat)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPT_dyn_cmp)\ + TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPT_dyn_cmp_stat)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPT_st_cmp)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPT_dyn_less)\ TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPT_st_less)\ + TEST_SET_EXTRACT(SplitList_Lazy_RCU_GPT_st_less_stat)\ CDSUNIT_DECLARE_SplitList_RCU_signal #define CDSUNIT_TEST_SplitList \ CPPUNIT_TEST(SplitList_Michael_HP_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Michael_HP_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Michael_HP_st_cmp)\ CPPUNIT_TEST(SplitList_Michael_HP_dyn_less)\ CPPUNIT_TEST(SplitList_Michael_HP_st_less)\ + CPPUNIT_TEST(SplitList_Michael_HP_st_less_stat)\ CPPUNIT_TEST(SplitList_Michael_DHP_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Michael_DHP_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Michael_DHP_st_cmp)\ CPPUNIT_TEST(SplitList_Michael_DHP_dyn_less)\ CPPUNIT_TEST(SplitList_Michael_DHP_st_less)\ + CPPUNIT_TEST(SplitList_Michael_DHP_st_less_stat)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPI_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Michael_RCU_GPI_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPI_st_cmp)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPI_dyn_less)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPI_st_less)\ + CPPUNIT_TEST(SplitList_Michael_RCU_GPI_st_less_stat)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPB_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Michael_RCU_GPB_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPB_st_cmp)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPB_dyn_less)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPB_st_less)\ + CPPUNIT_TEST(SplitList_Michael_RCU_GPB_st_less_stat)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPT_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Michael_RCU_GPT_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPT_st_cmp)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPT_dyn_less)\ CPPUNIT_TEST(SplitList_Michael_RCU_GPT_st_less)\ + CPPUNIT_TEST(SplitList_Michael_RCU_GPT_st_less_stat)\ CPPUNIT_TEST(SplitList_Lazy_HP_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Lazy_HP_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Lazy_HP_st_cmp)\ CPPUNIT_TEST(SplitList_Lazy_HP_dyn_less)\ CPPUNIT_TEST(SplitList_Lazy_HP_st_less)\ + CPPUNIT_TEST(SplitList_Lazy_HP_st_less_stat)\ CPPUNIT_TEST(SplitList_Lazy_DHP_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Lazy_HP_st_less_stat)\ CPPUNIT_TEST(SplitList_Lazy_DHP_st_cmp)\ CPPUNIT_TEST(SplitList_Lazy_DHP_dyn_less)\ CPPUNIT_TEST(SplitList_Lazy_DHP_st_less)\ + CPPUNIT_TEST(SplitList_Lazy_DHP_st_less_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_st_cmp)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_dyn_less)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_st_less)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_st_less_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_st_cmp)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_dyn_less)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_st_less)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_st_less_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_dyn_cmp)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_dyn_cmp_stat)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_st_cmp)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_dyn_less)\ CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_st_less)\ + CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_st_less_stat)\ CDSUNIT_TEST_SplitList_RCU_signal diff --git a/tests/unit/set2/set_types.h b/tests/unit/set2/set_types.h index 0e383465..568f26e3 100644 --- a/tests/unit/set2/set_types.h +++ b/tests/unit/set2/set_types.h @@ -58,6 +58,7 @@ #include "set2/std_hash_set.h" #include "michael_alloc.h" #include "print_cuckoo_stat.h" +#include "print_split_list_stat.h" #include "print_skip_list_stat.h" #include "print_ellenbintree_stat.h" #include "ellen_bintree_update_desc_pool.h" @@ -278,34 +279,6 @@ namespace set2 { } }; -#if (CDS_COMPILER == CDS_COMPILER_MSVC || (CDS_COMPILER == CDS_COMPILER_INTEL && CDS_OS_INTERFACE == CDS_OSI_WINDOWS)) && _MSC_VER < 1600 - struct hash_less: public stdext::hash_compare< key_type, std::less > - { - typedef stdext::hash_compare< key_type, std::less > base_class; - size_t operator()(const key_val& kv) const - { - return hash()(kv); - } - size_t operator()(const key_type& k ) const - { - return hash()(k); - } - - bool operator()(const key_val& kv1, const key_val& kv2) const - { - return less()( kv1, kv2 ); - } - bool operator()(const key_type& k1, const key_val& kv2) const - { - return less()( k1, kv2 ); - } - bool operator()(const key_val& kv1, const key_type& k2) const - { - return less()( kv1, k2 ); - } - }; -#endif - // *************************************************************************** // MichaelList @@ -575,1488 +548,279 @@ namespace set2 { #endif typedef cc::MichaelHashSet< cds::gc::HP, LazyList_HP_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_HP_less_stdAlloc; - typedef cc::MichaelHashSet< cds::gc::DHP, LazyList_DHP_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_DHP_less_stdAlloc; - typedef cc::MichaelHashSet< rcu_gpi, LazyList_RCU_GPI_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPI_less_stdAlloc; - typedef cc::MichaelHashSet< rcu_gpb, LazyList_RCU_GPB_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPB_less_stdAlloc; - typedef cc::MichaelHashSet< rcu_gpt, LazyList_RCU_GPT_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPT_less_stdAlloc; -#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED - typedef cc::MichaelHashSet< rcu_shb, LazyList_RCU_SHB_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_SHB_less_stdAlloc; - typedef cc::MichaelHashSet< rcu_sht, LazyList_RCU_SHT_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_SHT_less_stdAlloc; -#endif - - typedef cc::MichaelHashSet< cds::gc::HP, LazyList_HP_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_HP_less_stdAlloc_seqcst; - typedef cc::MichaelHashSet< cds::gc::DHP, LazyList_DHP_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_DHP_less_stdAlloc_seqcst; - typedef cc::MichaelHashSet< rcu_gpi, LazyList_RCU_GPI_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPI_less_stdAlloc_seqcst; - typedef cc::MichaelHashSet< rcu_gpb, LazyList_RCU_GPB_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPB_less_stdAlloc_seqcst; - typedef cc::MichaelHashSet< rcu_gpt, LazyList_RCU_GPT_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPT_less_stdAlloc_seqcst; -#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED - typedef cc::MichaelHashSet< rcu_shb, LazyList_RCU_SHB_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_SHB_less_stdAlloc_seqcst; - typedef cc::MichaelHashSet< rcu_sht, LazyList_RCU_SHT_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_SHT_less_stdAlloc_seqcst; -#endif - - typedef cc::MichaelHashSet< cds::gc::HP, LazyList_HP_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_HP_cmp_michaelAlloc; - typedef cc::MichaelHashSet< cds::gc::DHP, LazyList_DHP_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_DHP_cmp_michaelAlloc; - typedef cc::MichaelHashSet< rcu_gpi, LazyList_RCU_GPI_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPI_cmp_michaelAlloc; - typedef cc::MichaelHashSet< rcu_gpb, LazyList_RCU_GPB_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPB_cmp_michaelAlloc; - typedef cc::MichaelHashSet< rcu_gpt, LazyList_RCU_GPT_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPT_cmp_michaelAlloc; -#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED - typedef cc::MichaelHashSet< rcu_shb, LazyList_RCU_SHB_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_SHB_cmp_michaelAlloc; - typedef cc::MichaelHashSet< rcu_sht, LazyList_RCU_SHT_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_SHT_cmp_michaelAlloc; -#endif - - typedef cc::MichaelHashSet< cds::gc::HP, LazyList_HP_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_HP_less_michaelAlloc; - typedef cc::MichaelHashSet< cds::gc::DHP, LazyList_DHP_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_DHP_less_michaelAlloc; - typedef cc::MichaelHashSet< rcu_gpi, LazyList_RCU_GPI_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPI_less_michaelAlloc; - typedef cc::MichaelHashSet< rcu_gpb, LazyList_RCU_GPB_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPB_less_michaelAlloc; - typedef cc::MichaelHashSet< rcu_gpt, LazyList_RCU_GPT_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPT_less_michaelAlloc; -#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED - typedef cc::MichaelHashSet< rcu_shb, LazyList_RCU_SHB_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_SHB_less_michaelAlloc; - typedef cc::MichaelHashSet< rcu_sht, LazyList_RCU_SHT_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_SHT_less_michaelAlloc; -#endif - - // *************************************************************************** - // SplitListSet based on MichaelList - - // HP - typedef cc::SplitListSet< cds::gc::HP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_HP_dyn_cmp; - - typedef cc::SplitListSet< cds::gc::HP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_HP_dyn_cmp_seqcst; - - typedef cc::SplitListSet< cds::gc::HP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_HP_st_cmp; - - typedef cc::SplitListSet< cds::gc::HP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_HP_st_cmp_seqcst; - - //HP + less - typedef cc::SplitListSet< cds::gc::HP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_HP_dyn_less; - - typedef cc::SplitListSet< cds::gc::HP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_HP_dyn_less_seqcst; - - typedef cc::SplitListSet< cds::gc::HP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_HP_st_less; - - typedef cc::SplitListSet< cds::gc::HP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_HP_st_less_seqcst; - - // DHP - typedef cc::SplitListSet< cds::gc::DHP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_DHP_dyn_cmp; - - typedef cc::SplitListSet< cds::gc::DHP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_DHP_dyn_cmp_seqcst; - - typedef cc::SplitListSet< cds::gc::DHP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_DHP_st_cmp; - - typedef cc::SplitListSet< cds::gc::DHP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_DHP_st_cmp_seqcst; - - // DHP + less - typedef cc::SplitListSet< cds::gc::DHP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_DHP_dyn_less; - - typedef cc::SplitListSet< cds::gc::DHP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_DHP_dyn_less_seqcst; - - typedef cc::SplitListSet< cds::gc::DHP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_DHP_st_less; - - typedef cc::SplitListSet< cds::gc::DHP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_DHP_st_less_seqcst; - - // RCU - typedef cc::SplitListSet< rcu_gpi, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_GPI_dyn_cmp; - - typedef cc::SplitListSet< rcu_gpi, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_GPI_dyn_cmp_seqcst; - - typedef cc::SplitListSet< rcu_gpi, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_GPI_st_cmp; - - typedef cc::SplitListSet< rcu_gpi, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_GPI_st_cmp_seqcst; - - // RCU_GPI + less - typedef cc::SplitListSet< rcu_gpi, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_RCU_GPI_dyn_less; - - typedef cc::SplitListSet< rcu_gpi, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_GPI_dyn_less_seqcst; - - typedef cc::SplitListSet< rcu_gpi, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_RCU_GPI_st_less; - - typedef cc::SplitListSet< rcu_gpi, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_GPI_st_less_seqcst; - - - // - typedef cc::SplitListSet< rcu_gpb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_GPB_dyn_cmp; - - typedef cc::SplitListSet< rcu_gpb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_GPB_dyn_cmp_seqcst; - - typedef cc::SplitListSet< rcu_gpb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_GPB_st_cmp; - - typedef cc::SplitListSet< rcu_gpb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_GPB_st_cmp_seqcst; - - // RCU_GPB + less - typedef cc::SplitListSet< rcu_gpb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_RCU_GPB_dyn_less; - - typedef cc::SplitListSet< rcu_gpb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_GPB_dyn_less_seqcst; - - typedef cc::SplitListSet< rcu_gpb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_RCU_GPB_st_less; - - typedef cc::SplitListSet< rcu_gpb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_GPB_st_less_seqcst; - - // - typedef cc::SplitListSet< rcu_gpt, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_GPT_dyn_cmp; - - typedef cc::SplitListSet< rcu_gpt, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_GPT_dyn_cmp_seqcst; - - typedef cc::SplitListSet< rcu_gpt, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_GPT_st_cmp; - - typedef cc::SplitListSet< rcu_gpt, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_GPT_st_cmp_seqcst; - - // RCU_GPT + less - typedef cc::SplitListSet< rcu_gpt, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_RCU_GPT_dyn_less; - - typedef cc::SplitListSet< rcu_gpt, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_GPT_dyn_less_seqcst; - - typedef cc::SplitListSet< rcu_gpt, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_RCU_GPT_st_less; - - typedef cc::SplitListSet< rcu_gpt, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_GPT_st_less_seqcst; - -#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED - typedef cc::SplitListSet< rcu_shb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_SHB_dyn_cmp; - - typedef cc::SplitListSet< rcu_shb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_SHB_dyn_cmp_seqcst; - - typedef cc::SplitListSet< rcu_shb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_SHB_st_cmp; - - typedef cc::SplitListSet< rcu_shb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_SHB_st_cmp_seqcst; - - // RCU_SHB + less - typedef cc::SplitListSet< rcu_shb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_RCU_SHB_dyn_less; - - typedef cc::SplitListSet< rcu_shb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_SHB_dyn_less_seqcst; - - typedef cc::SplitListSet< rcu_shb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_RCU_SHB_st_less; - - typedef cc::SplitListSet< rcu_shb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_SHB_st_less_seqcst; - - // - typedef cc::SplitListSet< rcu_sht, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_SHT_dyn_cmp; - - typedef cc::SplitListSet< rcu_sht, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_SHT_dyn_cmp_seqcst; - - typedef cc::SplitListSet< rcu_sht, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Michael_RCU_SHT_st_cmp; - - typedef cc::SplitListSet< rcu_sht, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_SHT_st_cmp_seqcst; - - // RCU_SHT + less - typedef cc::SplitListSet< rcu_sht, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_RCU_SHT_dyn_less; - - typedef cc::SplitListSet< rcu_sht, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_SHT_dyn_less_seqcst; - - typedef cc::SplitListSet< rcu_sht, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Michael_RCU_SHT_st_less; - - typedef cc::SplitListSet< rcu_sht, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::michael_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Michael_RCU_SHT_st_less_seqcst; -#endif - - // *************************************************************************** - // SplitListSet based on LazyList - - // HP - typedef cc::SplitListSet< cds::gc::HP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_HP_dyn_cmp; - - typedef cc::SplitListSet< cds::gc::HP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_HP_dyn_cmp_seqcst; - - typedef cc::SplitListSet< cds::gc::HP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_HP_st_cmp; - - typedef cc::SplitListSet< cds::gc::HP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_HP_st_cmp_seqcst; - - - // HP + less - typedef cc::SplitListSet< cds::gc::HP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_HP_dyn_less; - - typedef cc::SplitListSet< cds::gc::HP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_HP_dyn_less_seqcst; - - typedef cc::SplitListSet< cds::gc::HP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_HP_st_less; - - typedef cc::SplitListSet< cds::gc::HP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_HP_st_less_seqcst; - - // DHP - typedef cc::SplitListSet< cds::gc::DHP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_DHP_dyn_cmp; - - typedef cc::SplitListSet< cds::gc::DHP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_DHP_dyn_cmp_seqcst; - - typedef cc::SplitListSet< cds::gc::DHP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_DHP_st_cmp; - - typedef cc::SplitListSet< cds::gc::DHP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_DHP_st_cmp_seqcst; - - // DHP + less - typedef cc::SplitListSet< cds::gc::DHP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_DHP_dyn_less; - - typedef cc::SplitListSet< cds::gc::DHP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_DHP_dyn_less_seqcst; - - typedef cc::SplitListSet< cds::gc::DHP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_DHP_st_less; - - typedef cc::SplitListSet< cds::gc::DHP, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_DHP_st_less_seqcst; - - - // RCU - typedef cc::SplitListSet< rcu_gpi, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_RCU_GPI_dyn_cmp; - - typedef cc::SplitListSet< rcu_gpi, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPI_dyn_cmp_seqcst; - - typedef cc::SplitListSet< rcu_gpi, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_RCU_GPI_st_cmp; - - typedef cc::SplitListSet< rcu_gpi, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPI_st_cmp_seqcst; - - // RCU_GPI + less - typedef cc::SplitListSet< rcu_gpi, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_RCU_GPI_dyn_less; - - typedef cc::SplitListSet< rcu_gpi, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPI_dyn_less_seqcst; - - typedef cc::SplitListSet< rcu_gpi, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_RCU_GPI_st_less; - - typedef cc::SplitListSet< rcu_gpi, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPI_st_less_seqcst; - - // - typedef cc::SplitListSet< rcu_gpb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_RCU_GPB_dyn_cmp; - - typedef cc::SplitListSet< rcu_gpb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPB_dyn_cmp_seqcst; - - typedef cc::SplitListSet< rcu_gpb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_RCU_GPB_st_cmp; - - typedef cc::SplitListSet< rcu_gpb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPB_st_cmp_seqcst; + typedef cc::MichaelHashSet< cds::gc::DHP, LazyList_DHP_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_DHP_less_stdAlloc; + typedef cc::MichaelHashSet< rcu_gpi, LazyList_RCU_GPI_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPI_less_stdAlloc; + typedef cc::MichaelHashSet< rcu_gpb, LazyList_RCU_GPB_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPB_less_stdAlloc; + typedef cc::MichaelHashSet< rcu_gpt, LazyList_RCU_GPT_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPT_less_stdAlloc; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::MichaelHashSet< rcu_shb, LazyList_RCU_SHB_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_SHB_less_stdAlloc; + typedef cc::MichaelHashSet< rcu_sht, LazyList_RCU_SHT_less_stdAlloc, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_SHT_less_stdAlloc; +#endif - // RCU_GPB + less - typedef cc::SplitListSet< rcu_gpb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_RCU_GPB_dyn_less; + typedef cc::MichaelHashSet< cds::gc::HP, LazyList_HP_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_HP_less_stdAlloc_seqcst; + typedef cc::MichaelHashSet< cds::gc::DHP, LazyList_DHP_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_DHP_less_stdAlloc_seqcst; + typedef cc::MichaelHashSet< rcu_gpi, LazyList_RCU_GPI_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPI_less_stdAlloc_seqcst; + typedef cc::MichaelHashSet< rcu_gpb, LazyList_RCU_GPB_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPB_less_stdAlloc_seqcst; + typedef cc::MichaelHashSet< rcu_gpt, LazyList_RCU_GPT_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_GPT_less_stdAlloc_seqcst; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::MichaelHashSet< rcu_shb, LazyList_RCU_SHB_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_SHB_less_stdAlloc_seqcst; + typedef cc::MichaelHashSet< rcu_sht, LazyList_RCU_SHT_less_stdAlloc_seqcst, traits_MichaelSet_stdAlloc > MichaelSet_Lazy_RCU_SHT_less_stdAlloc_seqcst; +#endif - typedef cc::SplitListSet< rcu_gpb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPB_dyn_less_seqcst; + typedef cc::MichaelHashSet< cds::gc::HP, LazyList_HP_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_HP_cmp_michaelAlloc; + typedef cc::MichaelHashSet< cds::gc::DHP, LazyList_DHP_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_DHP_cmp_michaelAlloc; + typedef cc::MichaelHashSet< rcu_gpi, LazyList_RCU_GPI_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPI_cmp_michaelAlloc; + typedef cc::MichaelHashSet< rcu_gpb, LazyList_RCU_GPB_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPB_cmp_michaelAlloc; + typedef cc::MichaelHashSet< rcu_gpt, LazyList_RCU_GPT_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPT_cmp_michaelAlloc; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::MichaelHashSet< rcu_shb, LazyList_RCU_SHB_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_SHB_cmp_michaelAlloc; + typedef cc::MichaelHashSet< rcu_sht, LazyList_RCU_SHT_cmp_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_SHT_cmp_michaelAlloc; +#endif - typedef cc::SplitListSet< rcu_gpb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_RCU_GPB_st_less; + typedef cc::MichaelHashSet< cds::gc::HP, LazyList_HP_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_HP_less_michaelAlloc; + typedef cc::MichaelHashSet< cds::gc::DHP, LazyList_DHP_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_DHP_less_michaelAlloc; + typedef cc::MichaelHashSet< rcu_gpi, LazyList_RCU_GPI_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPI_less_michaelAlloc; + typedef cc::MichaelHashSet< rcu_gpb, LazyList_RCU_GPB_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPB_less_michaelAlloc; + typedef cc::MichaelHashSet< rcu_gpt, LazyList_RCU_GPT_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_GPT_less_michaelAlloc; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::MichaelHashSet< rcu_shb, LazyList_RCU_SHB_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_SHB_less_michaelAlloc; + typedef cc::MichaelHashSet< rcu_sht, LazyList_RCU_SHT_less_michaelAlloc, traits_MichaelSet_michaelAlloc > MichaelSet_Lazy_RCU_SHT_less_michaelAlloc; +#endif - typedef cc::SplitListSet< rcu_gpb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list + // *************************************************************************** + // SplitListSet based on MichaelList + + struct traits_SplitList_Michael_dyn_cmp : + public cc::split_list::make_traits< + cc::split_list::ordered_list ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > + typename cc::michael_list::make_traits< + co::compare< compare > >::type > >::type - > SplitList_Lazy_RCU_GPB_st_less_seqcst; + {}; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_HP_dyn_cmp; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_DHP_dyn_cmp; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_GPI_dyn_cmp; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_GPB_dyn_cmp; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_GPT_dyn_cmp; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_SHB_dyn_cmp; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_SHT_dyn_cmp; +#endif - // - typedef cc::SplitListSet< rcu_gpt, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list + struct traits_SplitList_Michael_dyn_cmp_stat : + public cc::split_list::make_traits< + cc::split_list::ordered_list ,co::hash< hash > + ,co::stat< cc::split_list::stat<> > ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< + typename cc::michael_list::make_traits< co::compare< compare > >::type > >::type - > SplitList_Lazy_RCU_GPT_dyn_cmp; + {}; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_HP_dyn_cmp_stat; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_DHP_dyn_cmp_stat; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_GPI_dyn_cmp_stat; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_GPB_dyn_cmp_stat; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_GPT_dyn_cmp_stat; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_SHB_dyn_cmp_stat; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_SHT_dyn_cmp_stat; +#endif - typedef cc::SplitListSet< rcu_gpt, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list + struct traits_SplitList_Michael_dyn_cmp_seqcst : + public cc::split_list::make_traits< + cc::split_list::ordered_list ,co::hash< hash > ,co::memory_model< co::v::sequential_consistent > ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< + typename cc::michael_list::make_traits< co::compare< compare > ,co::memory_model< co::v::sequential_consistent > >::type > >::type - > SplitList_Lazy_RCU_GPT_dyn_cmp_seqcst; + {}; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_HP_dyn_cmp_seqcst; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_DHP_dyn_cmp_seqcst; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_GPI_dyn_cmp_seqcst; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_GPB_dyn_cmp_seqcst; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_GPT_dyn_cmp_seqcst; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_SHB_dyn_cmp_seqcst; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_SHT_dyn_cmp_seqcst; +#endif - typedef cc::SplitListSet< rcu_gpt, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list + struct traits_SplitList_Michael_st_cmp : + public cc::split_list::make_traits< + cc::split_list::ordered_list ,cc::split_list::dynamic_bucket_table< false > ,co::hash< hash > ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< + typename cc::michael_list::make_traits< co::compare< compare > >::type > >::type - > SplitList_Lazy_RCU_GPT_st_cmp; + {}; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Michael_st_cmp > SplitList_Michael_HP_st_cmp; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_st_cmp > SplitList_Michael_DHP_st_cmp; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_GPI_st_cmp; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_GPB_st_cmp; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_GPT_st_cmp; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_SHB_st_cmp; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_SHT_st_cmp; +#endif - typedef cc::SplitListSet< rcu_gpt, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list + struct traits_SplitList_Michael_st_cmp_seqcst : + public cc::split_list::make_traits< + cc::split_list::ordered_list ,co::hash< hash > ,cc::split_list::dynamic_bucket_table< false > ,co::memory_model< co::v::sequential_consistent > ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< + typename cc::michael_list::make_traits< co::compare< compare > ,co::memory_model< co::v::sequential_consistent > >::type > >::type - > SplitList_Lazy_RCU_GPT_st_cmp_seqcst; - - // RCU_GPT + less - typedef cc::SplitListSet< rcu_gpt, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_RCU_GPT_dyn_less; - - typedef cc::SplitListSet< rcu_gpt, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_GPT_dyn_less_seqcst; + {}; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Michael_st_cmp_seqcst> SplitList_Michael_HP_st_cmp_seqcst; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_st_cmp_seqcst> SplitList_Michael_DHP_st_cmp_seqcst; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_st_cmp_seqcst> SplitList_Michael_RCU_GPI_st_cmp_seqcst; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_st_cmp_seqcst> SplitList_Michael_RCU_GPB_st_cmp_seqcst; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_st_cmp_seqcst> SplitList_Michael_RCU_GPT_st_cmp_seqcst; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_st_cmp_seqcst> SplitList_Michael_RCU_SHB_st_cmp_seqcst; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_st_cmp_seqcst> SplitList_Michael_RCU_SHT_st_cmp_seqcst; +#endif - typedef cc::SplitListSet< rcu_gpt, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > + //HP + less + struct traits_SplitList_Michael_dyn_less : + public cc::split_list::make_traits< + cc::split_list::ordered_list ,co::hash< hash > ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< + typename cc::michael_list::make_traits< co::less< less > >::type > >::type - > SplitList_Lazy_RCU_GPT_st_less; + {}; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Michael_dyn_less > SplitList_Michael_HP_dyn_less; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_dyn_less > SplitList_Michael_DHP_dyn_less; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_GPI_dyn_less; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_GPB_dyn_less; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_GPT_dyn_less; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_SHB_dyn_less; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_SHT_dyn_less; +#endif - typedef cc::SplitListSet< rcu_gpt, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list + struct traits_SplitList_Michael_dyn_less_seqcst : + public cc::split_list::make_traits< + cc::split_list::ordered_list ,co::hash< hash > - ,cc::split_list::dynamic_bucket_table< false > ,co::memory_model< co::v::sequential_consistent > ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< + typename cc::michael_list::make_traits< co::less< less > ,co::memory_model< co::v::sequential_consistent > >::type > >::type - > SplitList_Lazy_RCU_GPT_st_less_seqcst; - + {}; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_HP_dyn_less_seqcst; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_DHP_dyn_less_seqcst; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_RCU_GPI_dyn_less_seqcst; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_RCU_GPB_dyn_less_seqcst; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_RCU_GPT_dyn_less_seqcst; #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED - typedef cc::SplitListSet< rcu_shb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_RCU_SHB_dyn_cmp; - - typedef cc::SplitListSet< rcu_shb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_SHB_dyn_cmp_seqcst; - - typedef cc::SplitListSet< rcu_shb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,cc::split_list::dynamic_bucket_table< false > - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - >::type - > - >::type - > SplitList_Lazy_RCU_SHB_st_cmp; + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_RCU_SHB_dyn_less_seqcst; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_dyn_less_seqcst > SplitList_Michael_RCU_SHT_dyn_less_seqcst; +#endif - typedef cc::SplitListSet< rcu_shb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > + struct traits_SplitList_Michael_st_less : + public cc::split_list::make_traits< + cc::split_list::ordered_list ,cc::split_list::dynamic_bucket_table< false > - ,co::memory_model< co::v::sequential_consistent > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::compare< compare > - ,co::memory_model< co::v::sequential_consistent > - >::type - > - >::type - > SplitList_Lazy_RCU_SHB_st_cmp_seqcst; - - // RCU_SHB + less - typedef cc::SplitListSet< rcu_shb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list - ,co::hash< hash > - ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< - co::less< less > - >::type - > - >::type - > SplitList_Lazy_RCU_SHB_dyn_less; - - typedef cc::SplitListSet< rcu_shb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list ,co::hash< hash > - ,co::memory_model< co::v::sequential_consistent > ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< + typename cc::michael_list::make_traits< co::less< less > - ,co::memory_model< co::v::sequential_consistent > >::type > >::type - > SplitList_Lazy_RCU_SHB_dyn_less_seqcst; + {}; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Michael_st_less > SplitList_Michael_HP_st_less; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_st_less > SplitList_Michael_DHP_st_less; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_GPI_st_less; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_GPB_st_less; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_GPT_st_less; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_SHB_st_less; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_SHT_st_less; +#endif - typedef cc::SplitListSet< rcu_shb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list + struct traits_SplitList_Michael_st_less_stat : + public cc::split_list::make_traits< + cc::split_list::ordered_list ,cc::split_list::dynamic_bucket_table< false > ,co::hash< hash > + ,co::stat< cc::split_list::stat<>> ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< + typename cc::michael_list::make_traits< co::less< less > >::type > >::type - > SplitList_Lazy_RCU_SHB_st_less; + {}; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Michael_st_less_stat > SplitList_Michael_HP_st_less_stat; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_st_less_stat > SplitList_Michael_DHP_st_less_stat; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_GPI_st_less_stat; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_GPB_st_less_stat; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_GPT_st_less_stat; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_SHB_st_less_stat; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_SHT_st_less_stat; +#endif - typedef cc::SplitListSet< rcu_shb, key_val, - typename cc::split_list::make_traits< - cc::split_list::ordered_list + struct traits_SplitList_Michael_st_less_seqcst : + public cc::split_list::make_traits< + cc::split_list::ordered_list ,co::hash< hash > ,cc::split_list::dynamic_bucket_table< false > ,co::memory_model< co::v::sequential_consistent > ,cc::split_list::ordered_list_traits< - typename cc::lazy_list::make_traits< + typename cc::michael_list::make_traits< co::less< less > ,co::memory_model< co::v::sequential_consistent > >::type > >::type - > SplitList_Lazy_RCU_SHB_st_less_seqcst; + {}; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_HP_st_less_seqcst; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_DHP_st_less_seqcst; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_RCU_GPI_st_less_seqcst; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_RCU_GPB_st_less_seqcst; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_RCU_GPT_st_less_seqcst; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_RCU_SHB_st_less_seqcst; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_st_less_seqcst > SplitList_Michael_RCU_SHT_st_less_seqcst; +#endif + + // *************************************************************************** + // SplitListSet based on LazyList - // - typedef cc::SplitListSet< rcu_sht, key_val, - typename cc::split_list::make_traits< + struct traits_SplitList_Lazy_dyn_cmp : + public cc::split_list::make_traits< cc::split_list::ordered_list ,co::hash< hash > ,cc::split_list::ordered_list_traits< @@ -2065,10 +829,33 @@ namespace set2 { >::type > >::type - > SplitList_Lazy_RCU_SHT_dyn_cmp; + {}; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_HP_dyn_cmp; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_DHP_dyn_cmp; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_GPI_dyn_cmp; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_GPB_dyn_cmp; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_GPT_dyn_cmp; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_SHB_dyn_cmp; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_SHT_dyn_cmp; +#endif + + struct traits_SplitList_Lazy_dyn_cmp_stat : public traits_SplitList_Lazy_dyn_cmp + { + typedef cc::split_list::stat<> stat; + }; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_HP_dyn_cmp_stat; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_DHP_dyn_cmp_stat; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_RCU_GPI_dyn_cmp_stat; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_RCU_GPB_dyn_cmp_stat; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_RCU_GPT_dyn_cmp_stat; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_SHB_dyn_cmp_stat; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_SHT_dyn_cmp_stat; +#endif - typedef cc::SplitListSet< rcu_sht, key_val, - typename cc::split_list::make_traits< + struct traits_SplitList_Lazy_dyn_cmp_seqcst : + public cc::split_list::make_traits< cc::split_list::ordered_list ,co::hash< hash > ,co::memory_model< co::v::sequential_consistent > @@ -2079,10 +866,19 @@ namespace set2 { >::type > >::type - > SplitList_Lazy_RCU_SHT_dyn_cmp_seqcst; + {}; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_HP_dyn_cmp_seqcst; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_DHP_dyn_cmp_seqcst; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_GPI_dyn_cmp_seqcst; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_GPB_dyn_cmp_seqcst; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_GPT_dyn_cmp_seqcst; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_SHB_dyn_cmp_seqcst; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_SHT_dyn_cmp_seqcst; +#endif - typedef cc::SplitListSet< rcu_sht, key_val, - typename cc::split_list::make_traits< + struct traits_SplitList_Lazy_st_cmp : + public cc::split_list::make_traits< cc::split_list::ordered_list ,cc::split_list::dynamic_bucket_table< false > ,co::hash< hash > @@ -2092,10 +888,19 @@ namespace set2 { >::type > >::type - > SplitList_Lazy_RCU_SHT_st_cmp; + {}; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_st_cmp > SplitList_Lazy_HP_st_cmp; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_st_cmp > SplitList_Lazy_DHP_st_cmp; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_GPI_st_cmp; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_GPB_st_cmp; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_GPT_st_cmp; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_SHB_st_cmp; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_SHT_st_cmp; +#endif - typedef cc::SplitListSet< rcu_sht, key_val, - typename cc::split_list::make_traits< + struct traits_SplitList_Lazy_st_cmp_seqcst : + public cc::split_list::make_traits< cc::split_list::ordered_list ,co::hash< hash > ,cc::split_list::dynamic_bucket_table< false > @@ -2107,11 +912,19 @@ namespace set2 { >::type > >::type - > SplitList_Lazy_RCU_SHT_st_cmp_seqcst; + {}; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_st_cmp_seqcst > SplitList_Lazy_HP_st_cmp_seqcst; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_st_cmp_seqcst > SplitList_Lazy_DHP_st_cmp_seqcst; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_st_cmp_seqcst > SplitList_Lazy_RCU_GPI_st_cmp_seqcst; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_st_cmp_seqcst > SplitList_Lazy_RCU_GPB_st_cmp_seqcst; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_st_cmp_seqcst > SplitList_Lazy_RCU_GPT_st_cmp_seqcst; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_st_cmp_seqcst > SplitList_Lazy_RCU_SHB_st_cmp_seqcst; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_st_cmp_seqcst > SplitList_Lazy_RCU_SHT_st_cmp_seqcst; +#endif - // RCU_SHT + less - typedef cc::SplitListSet< rcu_sht, key_val, - typename cc::split_list::make_traits< + struct traits_SplitList_Lazy_dyn_less : + public cc::split_list::make_traits< cc::split_list::ordered_list ,co::hash< hash > ,cc::split_list::ordered_list_traits< @@ -2120,10 +933,19 @@ namespace set2 { >::type > >::type - > SplitList_Lazy_RCU_SHT_dyn_less; + {}; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_dyn_less > SplitList_Lazy_HP_dyn_less; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_dyn_less > SplitList_Lazy_DHP_dyn_less; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_GPI_dyn_less; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_GPB_dyn_less; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_GPT_dyn_less; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_SHB_dyn_less; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_SHT_dyn_less; +#endif - typedef cc::SplitListSet< rcu_sht, key_val, - typename cc::split_list::make_traits< + struct traits_SplitList_Lazy_dyn_less_seqcst : + public cc::split_list::make_traits< cc::split_list::ordered_list ,co::hash< hash > ,co::memory_model< co::v::sequential_consistent > @@ -2134,10 +956,19 @@ namespace set2 { >::type > >::type - > SplitList_Lazy_RCU_SHT_dyn_less_seqcst; + {}; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_HP_dyn_less_seqcst; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_DHP_dyn_less_seqcst; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_RCU_GPI_dyn_less_seqcst; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_RCU_GPB_dyn_less_seqcst; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_RCU_GPT_dyn_less_seqcst; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_RCU_SHB_dyn_less_seqcst; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_dyn_less_seqcst > SplitList_Lazy_RCU_SHT_dyn_less_seqcst; +#endif - typedef cc::SplitListSet< rcu_sht, key_val, - typename cc::split_list::make_traits< + struct traits_SplitList_Lazy_st_less : + public cc::split_list::make_traits< cc::split_list::ordered_list ,cc::split_list::dynamic_bucket_table< false > ,co::hash< hash > @@ -2147,10 +978,19 @@ namespace set2 { >::type > >::type - > SplitList_Lazy_RCU_SHT_st_less; + {}; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_st_less > SplitList_Lazy_HP_st_less; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_st_less > SplitList_Lazy_DHP_st_less; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_st_less > SplitList_Lazy_RCU_GPI_st_less; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_st_less > SplitList_Lazy_RCU_GPB_st_less; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_st_less > SplitList_Lazy_RCU_GPT_st_less; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_st_less > SplitList_Lazy_RCU_SHB_st_less; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_st_less > SplitList_Lazy_RCU_SHT_st_less; +#endif - typedef cc::SplitListSet< rcu_sht, key_val, - typename cc::split_list::make_traits< + struct traits_SplitList_Lazy_st_less_seqcst : + public cc::split_list::make_traits< cc::split_list::ordered_list ,co::hash< hash > ,cc::split_list::dynamic_bucket_table< false > @@ -2162,9 +1002,32 @@ namespace set2 { >::type > >::type - > SplitList_Lazy_RCU_SHT_st_less_seqcst; + {}; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_st_less_seqcst > SplitList_Lazy_HP_st_less_seqcst; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_st_less_seqcst > SplitList_Lazy_DHP_st_less_seqcst; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_st_less_seqcst > SplitList_Lazy_RCU_GPI_st_less_seqcst; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_st_less_seqcst > SplitList_Lazy_RCU_GPB_st_less_seqcst; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_st_less_seqcst > SplitList_Lazy_RCU_GPT_st_less_seqcst; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_st_less_seqcst > SplitList_Lazy_RCU_SHB_st_less_seqcst; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_st_less_seqcst > SplitList_Lazy_RCU_SHT_st_less_seqcst; +#endif + struct traits_SplitList_Lazy_st_less_stat : public traits_SplitList_Lazy_st_less + { + typedef cc::split_list::stat<> stat; + }; + typedef cc::SplitListSet< cds::gc::HP, key_val, traits_SplitList_Lazy_st_less_stat > SplitList_Lazy_HP_st_less_stat; + typedef cc::SplitListSet< cds::gc::DHP, key_val, traits_SplitList_Lazy_st_less_stat > SplitList_Lazy_DHP_st_less_stat; + typedef cc::SplitListSet< rcu_gpi, key_val, traits_SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_GPI_st_less_stat; + typedef cc::SplitListSet< rcu_gpb, key_val, traits_SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_GPB_st_less_stat; + typedef cc::SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_GPT_st_less_stat; +#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED + typedef cc::SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_SHB_st_less_stat; + typedef cc::SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_SHT_st_less_stat; #endif + + // *************************************************************************** // StripedSet @@ -3428,6 +2291,12 @@ namespace set2 { static inline void print_stat( Set const& s ) {} + template + static inline void print_stat( cc::SplitListSet const& s ) + { + CPPUNIT_MSG( s.statistics() ); + } + template static inline void print_stat( cc::SkipListSet const& s ) {