+++ /dev/null
-//$$CDS-header$$
-
-#ifndef __CDS_CONTAINER_MICHAEL_KVLIST_HRC_H
-#define __CDS_CONTAINER_MICHAEL_KVLIST_HRC_H
-
-#include <cds/container/details/michael_list_base.h>
-#include <cds/intrusive/michael_list_hrc.h>
-#include <cds/container/details/make_michael_kvlist.h>
-#include <cds/container/impl/michael_kvlist.h>
-
-#endif // #ifndef __CDS_CONTAINER_MICHAEL_KVLIST_HRC_H
+++ /dev/null
-//$$CDS-header$$
-
-#ifndef __CDS_CONTAINER_MICHAEL_LIST_HRC_H
-#define __CDS_CONTAINER_MICHAEL_LIST_HRC_H
-
-#include <cds/container/details/michael_list_base.h>
-#include <cds/intrusive/michael_list_hrc.h>
-#include <cds/container/details/make_michael_list.h>
-#include <cds/container/impl/michael_list.h>
-
-#endif // #ifndef __CDS_CONTAINER_MICHAEL_LIST_HRC_H
You should select GC needed and include appropriate .h-file:
- for gc::HP: \code #include <cds/intrusive/michael_list_hp.h> \endcode
- for gc::DHP: \code #include <cds/intrusive/michael_list_dhp.h> \endcode
- - for gc::HRC: \code #include <cds/intrusive/michael_list_hrc.h> \endcode
- for \ref cds_urcu_gc "RCU type" - see \ref cds_intrusive_MichaelList_rcu "RCU-based MichaelList"
- for gc::nogc: \code #include <cds/intrusive/michael_list_nogc.h> \endcode
See \ref cds_intrusive_MichaelList_nogc "non-GC MichaelList"
+++ /dev/null
-//$$CDS-header$$
-
-#ifndef __CDS_INTRUSIVE_MICHAEL_LIST_HRC_H
-#define __CDS_INTRUSIVE_MICHAEL_LIST_HRC_H
-
-#include <cds/intrusive/impl/michael_list.h>
-#include <cds/gc/hrc.h>
-
-namespace cds { namespace intrusive { namespace michael_list {
- //@cond
- // Specialization for HRC GC
- template <typename Tag>
- struct node< gc::HRC, Tag>: public gc::HRC::container_node
- {
- typedef gc::HRC gc ; ///< Garbage collector
- typedef Tag tag ; ///< tag
-
- typedef cds::details::marked_ptr<node, 1> marked_ptr ; ///< marked pointer
- typedef typename gc::atomic_marked_ptr< marked_ptr> atomic_marked_ptr ; ///< atomic marked pointer
- atomic_marked_ptr m_pNext ; ///< pointer to the next node in the stack
-
- node()
- : m_pNext( nullptr )
- {}
-
- protected:
- virtual void cleanUp( cds::gc::hrc::ThreadGC * pGC )
- {
- assert( pGC );
- typename gc::GuardArray<2> aGuards( *pGC );
-
- while ( true ) {
- marked_ptr pNextMarked( aGuards.protect( 0, m_pNext ));
- node * pNext = pNextMarked.ptr();
- if ( pNext && pNext->m_bDeleted.load(atomics::memory_order_acquire) ) {
- marked_ptr p = aGuards.protect( 1, pNext->m_pNext );
- m_pNext.compare_exchange_strong( pNextMarked, p, atomics::memory_order_acquire, atomics::memory_order_relaxed );
- continue;
- }
- else {
- break;
- }
- }
- }
-
- virtual void terminate( cds::gc::hrc::ThreadGC * pGC, bool bConcurrent )
- {
- if ( bConcurrent ) {
- marked_ptr pNext = m_pNext.load(atomics::memory_order_acquire);
- do {} while ( !m_pNext.compare_exchange_weak( pNext, marked_ptr(), atomics::memory_order_release, atomics::memory_order_relaxed ) );
- }
- else {
- m_pNext.store( marked_ptr(), atomics::memory_order_relaxed );
- }
- }
- };
- //@endcond
-
-
- //@cond
- template <typename NODE>
- struct link_checker_selector< gc::HRC, NODE, opt::never_check_link >
- {
- typedef link_checker<NODE> type;
- };
-
- template <typename NODE>
- struct link_checker_selector< gc::HRC, NODE, opt::debug_check_link >
- {
- typedef link_checker<NODE> type;
- };
- //@endcond
-
-}}} // namespace cds::intrusive::michael_list
-
-#endif // #ifndef __CDS_INTRUSIVE_MICHAEL_LIST_HP_H
Microsoft Visual Studio Solution File, Format Version 12.00\r
# Visual Studio Express 2013 for Windows Desktop\r
-VisualStudioVersion = 12.0.30723.0\r
+VisualStudioVersion = 12.0.31010.0\r
MinimumVisualStudioVersion = 10.0.40219.1\r
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cds", "cds.vcxproj", "{408FE9BC-44F0-4E6A-89FA-D6F952584239}"\r
EndProject\r
EndProject\r
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "map", "map", "{6BB7A27F-FC59-4267-B6FA-D034176D1459}"\r
ProjectSection(SolutionItems) = preProject\r
+ ..\..\..\tests\unit\map2\map_defs.h = ..\..\..\tests\unit\map2\map_defs.h\r
..\..\..\tests\unit\map2\map_types.h = ..\..\..\tests\unit\map2\map_types.h\r
..\..\..\tests\unit\map2\std_hash_map.h = ..\..\..\tests\unit\map2\std_hash_map.h\r
..\..\..\tests\unit\map2\std_hash_map_gcc.h = ..\..\..\tests\unit\map2\std_hash_map_gcc.h\r
<ClInclude Include="..\..\..\cds\intrusive\lazy_list_nogc.h" />\r
<ClInclude Include="..\..\..\cds\intrusive\lazy_list_ptb.h" />\r
<ClInclude Include="..\..\..\cds\intrusive\michael_list_hp.h" />\r
- <ClInclude Include="..\..\..\cds\intrusive\michael_list_hrc.h" />\r
<ClInclude Include="..\..\..\cds\intrusive\michael_list_nogc.h" />\r
<ClInclude Include="..\..\..\cds\intrusive\michael_set.h" />\r
<ClInclude Include="..\..\..\cds\intrusive\michael_set_nogc.h" />\r
<ClInclude Include="..\..\..\cds\container\lazy_list_nogc.h" />\r
<ClInclude Include="..\..\..\cds\container\lazy_list_ptb.h" />\r
<ClInclude Include="..\..\..\cds\container\michael_kvlist_hp.h" />\r
- <ClInclude Include="..\..\..\cds\container\michael_kvlist_hrc.h" />\r
<ClInclude Include="..\..\..\cds\container\michael_kvlist_nogc.h" />\r
<ClInclude Include="..\..\..\cds\container\michael_list_hp.h" />\r
- <ClInclude Include="..\..\..\cds\container\michael_list_hrc.h" />\r
<ClInclude Include="..\..\..\cds\container\michael_list_nogc.h" />\r
<ClInclude Include="..\..\..\cds\container\michael_map.h" />\r
<ClInclude Include="..\..\..\cds\container\michael_map_nogc.h" />\r
<ClInclude Include="..\..\..\cds\intrusive\michael_list_hp.h">\r
<Filter>Header Files\cds\intrusive</Filter>\r
</ClInclude>\r
- <ClInclude Include="..\..\..\cds\intrusive\michael_list_hrc.h">\r
- <Filter>Header Files\cds\intrusive</Filter>\r
- </ClInclude>\r
<ClInclude Include="..\..\..\cds\intrusive\michael_list_nogc.h">\r
<Filter>Header Files\cds\intrusive</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\cds\container\michael_kvlist_hp.h">\r
<Filter>Header Files\cds\container</Filter>\r
</ClInclude>\r
- <ClInclude Include="..\..\..\cds\container\michael_kvlist_hrc.h">\r
- <Filter>Header Files\cds\container</Filter>\r
- </ClInclude>\r
<ClInclude Include="..\..\..\cds\container\michael_kvlist_nogc.h">\r
<Filter>Header Files\cds\container</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\cds\container\michael_list_hp.h">\r
<Filter>Header Files\cds\container</Filter>\r
</ClInclude>\r
- <ClInclude Include="..\..\..\cds\container\michael_list_hrc.h">\r
- <Filter>Header Files\cds\container</Filter>\r
- </ClInclude>\r
<ClInclude Include="..\..\..\cds\container\michael_list_nogc.h">\r
<Filter>Header Files\cds\container</Filter>\r
</ClInclude>\r
<ItemGroup>\r
<ClCompile Include="..\..\..\tests\test-hdr\map\hdr_cuckoo_map.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\map\hdr_michael_map_hp.cpp" />\r
- <ClCompile Include="..\..\..\tests\test-hdr\map\hdr_michael_map_hrc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\map\hdr_michael_map_lazy_hp.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\map\hdr_michael_map_lazy_hrc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\map\hdr_michael_map_lazy_nogc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\map\hdr_skiplist_map_rcu_shb.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\map\hdr_skiplist_map_rcu_sht.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\map\hdr_splitlist_map_hp.cpp" />\r
- <ClCompile Include="..\..\..\tests\test-hdr\map\hdr_splitlist_map_hrc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\map\hdr_splitlist_map_lazy_hp.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\map\hdr_splitlist_map_lazy_hrc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\map\hdr_splitlist_map_lazy_nogc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\map\hdr_michael_map_hp.cpp">\r
<Filter>michael</Filter>\r
</ClCompile>\r
- <ClCompile Include="..\..\..\tests\test-hdr\map\hdr_michael_map_hrc.cpp">\r
- <Filter>michael</Filter>\r
- </ClCompile>\r
<ClCompile Include="..\..\..\tests\test-hdr\map\hdr_michael_map_lazy_hp.cpp">\r
<Filter>michael</Filter>\r
</ClCompile>\r
<ClCompile Include="..\..\..\tests\test-hdr\map\hdr_splitlist_map_hp.cpp">\r
<Filter>split_list</Filter>\r
</ClCompile>\r
- <ClCompile Include="..\..\..\tests\test-hdr\map\hdr_splitlist_map_hrc.cpp">\r
- <Filter>split_list</Filter>\r
- </ClCompile>\r
<ClCompile Include="..\..\..\tests\test-hdr\map\hdr_splitlist_map_lazy_hp.cpp">\r
<Filter>split_list</Filter>\r
</ClCompile>\r
<ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_intrusive_lazy_rcu_shb.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_intrusive_lazy_rcu_sht.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_intrusive_michael_hp.cpp" />\r
- <ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_intrusive_michael_hrc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_intrusive_michael_list_rcu_gpb.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_intrusive_michael_list_rcu_gpi.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_intrusive_michael_list_rcu_gpt.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_lazy_rcu_shb.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_lazy_rcu_sht.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_michael_hp.cpp" />\r
- <ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_michael_hrc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_michael_kv_hp.cpp" />\r
- <ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_michael_kv_hrc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_michael_kv_nogc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_michael_kv_ptb.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_michael_kv_rcu_gpb.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_intrusive_michael_hp.cpp">\r
<Filter>intrusive</Filter>\r
</ClCompile>\r
- <ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_intrusive_michael_hrc.cpp">\r
- <Filter>intrusive</Filter>\r
- </ClCompile>\r
<ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_intrusive_michael_list_rcu_gpb.cpp">\r
<Filter>intrusive</Filter>\r
</ClCompile>\r
<ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_michael_hp.cpp">\r
<Filter>container</Filter>\r
</ClCompile>\r
- <ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_michael_hrc.cpp">\r
- <Filter>container</Filter>\r
- </ClCompile>\r
<ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_michael_kv_hp.cpp">\r
<Filter>container</Filter>\r
</ClCompile>\r
- <ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_michael_kv_hrc.cpp">\r
- <Filter>container</Filter>\r
- </ClCompile>\r
<ClCompile Include="..\..\..\tests\test-hdr\ordered_list\hdr_michael_kv_nogc.cpp">\r
<Filter>container</Filter>\r
</ClCompile>\r
<ItemGroup>\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_michael_set_hp.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_michael_set_hp_lazy.cpp" />\r
- <ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_michael_set_hrc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_michael_set_hrc_lazy.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_michael_set_nogc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_michael_set_nogc_lazy.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_skiplist_rcu_sht_member.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_splitlist_set_hp.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_splitlist_set_hp_lazy.cpp" />\r
- <ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_splitlist_set_hrc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_splitlist_set_hrc_lazy.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_splitlist_set_nogc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_splitlist_set_nogc_lazy.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_splitlist_set_rcu_sht.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_splitlist_set_rcu_sht_lazy.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_michael_set_hp.cpp" />\r
- <ClCompile Include="..\..\..\tests\test-hdr\set\hdr_michael_set_hrc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_michael_set_lazy_hp.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_michael_set_lazy_hrc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_michael_set_lazy_nogc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_skiplist_set_rcu_shb.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_skiplist_set_rcu_sht.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_splitlist_set_hp.cpp" />\r
- <ClCompile Include="..\..\..\tests\test-hdr\set\hdr_splitlist_set_hrc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_splitlist_set_lazy_hp.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_splitlist_set_lazy_hrc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_splitlist_set_lazy_nogc.cpp" />\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_michael_set_hp_lazy.cpp">\r
<Filter>intrusive\michael_set</Filter>\r
</ClCompile>\r
- <ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_michael_set_hrc.cpp">\r
- <Filter>intrusive\michael_set</Filter>\r
- </ClCompile>\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_michael_set_hrc_lazy.cpp">\r
<Filter>intrusive\michael_set</Filter>\r
</ClCompile>\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_splitlist_set_hp_lazy.cpp">\r
<Filter>intrusive\split_list</Filter>\r
</ClCompile>\r
- <ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_splitlist_set_hrc.cpp">\r
- <Filter>intrusive\split_list</Filter>\r
- </ClCompile>\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_intrusive_splitlist_set_hrc_lazy.cpp">\r
<Filter>intrusive\split_list</Filter>\r
</ClCompile>\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_michael_set_hp.cpp">\r
<Filter>container\michael_set</Filter>\r
</ClCompile>\r
- <ClCompile Include="..\..\..\tests\test-hdr\set\hdr_michael_set_hrc.cpp">\r
- <Filter>container\michael_set</Filter>\r
- </ClCompile>\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_michael_set_lazy_hp.cpp">\r
<Filter>container\michael_set</Filter>\r
</ClCompile>\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_splitlist_set_hp.cpp">\r
<Filter>container\split_list</Filter>\r
</ClCompile>\r
- <ClCompile Include="..\..\..\tests\test-hdr\set\hdr_splitlist_set_hrc.cpp">\r
- <Filter>container\split_list</Filter>\r
- </ClCompile>\r
<ClCompile Include="..\..\..\tests\test-hdr\set\hdr_splitlist_set_lazy_hp.cpp">\r
<Filter>container\split_list</Filter>\r
</ClCompile>\r
CDS_TESTHDR_MAP := \
tests/test-hdr/map/hdr_michael_map_hp.cpp \
- tests/test-hdr/map/hdr_michael_map_hrc.cpp \
tests/test-hdr/map/hdr_michael_map_ptb.cpp \
tests/test-hdr/map/hdr_michael_map_rcu_gpi.cpp \
tests/test-hdr/map/hdr_michael_map_rcu_gpb.cpp \
tests/test-hdr/map/hdr_skiplist_map_rcu_sht.cpp \
tests/test-hdr/map/hdr_skiplist_map_nogc.cpp \
tests/test-hdr/map/hdr_splitlist_map_hp.cpp \
- tests/test-hdr/map/hdr_splitlist_map_hrc.cpp \
tests/test-hdr/map/hdr_splitlist_map_ptb.cpp \
tests/test-hdr/map/hdr_splitlist_map_nogc.cpp \
tests/test-hdr/map/hdr_splitlist_map_rcu_gpi.cpp \
tests/test-hdr/ordered_list/hdr_lazy_kv_rcu_gpt.cpp \
tests/test-hdr/ordered_list/hdr_lazy_kv_rcu_shb.cpp \
tests/test-hdr/ordered_list/hdr_lazy_kv_rcu_sht.cpp \
- tests/test-hdr/ordered_list/hdr_intrusive_michael_hrc.cpp \
tests/test-hdr/ordered_list/hdr_michael_hp.cpp \
- tests/test-hdr/ordered_list/hdr_michael_hrc.cpp \
tests/test-hdr/ordered_list/hdr_michael_nogc.cpp \
tests/test-hdr/ordered_list/hdr_michael_ptb.cpp \
tests/test-hdr/ordered_list/hdr_michael_rcu_gpi.cpp \
tests/test-hdr/ordered_list/hdr_michael_rcu_shb.cpp \
tests/test-hdr/ordered_list/hdr_michael_rcu_sht.cpp \
tests/test-hdr/ordered_list/hdr_michael_kv_hp.cpp \
- tests/test-hdr/ordered_list/hdr_michael_kv_hrc.cpp \
tests/test-hdr/ordered_list/hdr_michael_kv_nogc.cpp \
tests/test-hdr/ordered_list/hdr_michael_kv_ptb.cpp \
tests/test-hdr/ordered_list/hdr_michael_kv_rcu_gpi.cpp \
tests/test-hdr/queue/hdr_vyukov_mpmc_cyclic.cpp
CDS_TESTHDR_SET := \
- tests/test-hdr/set/hdr_intrusive_michael_set_hrc.cpp \
tests/test-hdr/set/hdr_intrusive_michael_set_hrc_lazy.cpp \
tests/test-hdr/set/hdr_intrusive_refinable_hashset_avlset.cpp \
tests/test-hdr/set/hdr_intrusive_refinable_hashset_list.cpp \
tests/test-hdr/set/hdr_intrusive_skiplist_rcu_shb.cpp \
tests/test-hdr/set/hdr_intrusive_skiplist_rcu_sht.cpp \
tests/test-hdr/set/hdr_intrusive_skiplist_nogc.cpp \
- tests/test-hdr/set/hdr_intrusive_splitlist_set_hrc.cpp \
tests/test-hdr/set/hdr_intrusive_splitlist_set_hrc_lazy.cpp \
tests/test-hdr/set/hdr_intrusive_striped_hashset_avlset.cpp \
tests/test-hdr/set/hdr_intrusive_striped_hashset_list.cpp \
tests/test-hdr/set/hdr_intrusive_striped_hashset_uset.cpp \
tests/test-hdr/set/hdr_intrusive_striped_set.cpp \
tests/test-hdr/set/hdr_michael_set_hp.cpp \
- tests/test-hdr/set/hdr_michael_set_hrc.cpp \
tests/test-hdr/set/hdr_michael_set_ptb.cpp \
tests/test-hdr/set/hdr_michael_set_rcu_gpi.cpp \
tests/test-hdr/set/hdr_michael_set_rcu_gpb.cpp \
tests/test-hdr/set/hdr_skiplist_set_rcu_sht.cpp \
tests/test-hdr/set/hdr_skiplist_set_nogc.cpp \
tests/test-hdr/set/hdr_splitlist_set_hp.cpp \
- tests/test-hdr/set/hdr_splitlist_set_hrc.cpp \
tests/test-hdr/set/hdr_splitlist_set_nogc.cpp \
tests/test-hdr/set/hdr_splitlist_set_ptb.cpp \
tests/test-hdr/set/hdr_splitlist_set_rcu_gpi.cpp \
void Michael_PTB_less();
void Michael_PTB_cmpmix();
- void Michael_HRC_cmp();
- void Michael_HRC_less();
- void Michael_HRC_cmpmix();
-
void Michael_RCU_GPI_cmp();
void Michael_RCU_GPI_less();
void Michael_RCU_GPI_cmpmix();
void Split_PTB_less();
void Split_PTB_cmpmix();
- void Split_HRC_cmp();
- void Split_HRC_less();
- void Split_HRC_cmpmix();
-
void Split_RCU_GPI_cmp();
void Split_RCU_GPI_less();
void Split_RCU_GPI_cmpmix();
CPPUNIT_TEST(Michael_PTB_less)
CPPUNIT_TEST(Michael_PTB_cmpmix)
- CPPUNIT_TEST(Michael_HRC_cmp)
- CPPUNIT_TEST(Michael_HRC_less)
- CPPUNIT_TEST(Michael_HRC_cmpmix)
-
CPPUNIT_TEST(Michael_RCU_GPI_cmp)
CPPUNIT_TEST(Michael_RCU_GPI_less)
CPPUNIT_TEST(Michael_RCU_GPI_cmpmix)
CPPUNIT_TEST(Split_PTB_less)
CPPUNIT_TEST(Split_PTB_cmpmix)
- CPPUNIT_TEST(Split_HRC_cmp)
- CPPUNIT_TEST(Split_HRC_less)
- CPPUNIT_TEST(Split_HRC_cmpmix)
-
CPPUNIT_TEST(Split_RCU_GPI_cmp)
CPPUNIT_TEST(Split_RCU_GPI_less)
CPPUNIT_TEST(Split_RCU_GPI_cmpmix)
+++ /dev/null
-//$$CDS-header$$
-
-#include "map/hdr_map.h"
-#include <cds/container/michael_kvlist_hrc.h>
-#include <cds/container/michael_map.h>
-
-namespace map {
- namespace {
- struct map_traits: public cc::michael_map::type_traits
- {
- typedef HashMapHdrTest::hash_int hash;
- typedef HashMapHdrTest::simple_item_counter item_counter;
- };
- struct HRC_cmp_traits: public cc::michael_list::type_traits
- {
- typedef HashMapHdrTest::cmp compare;
- };
-
- struct HRC_less_traits: public cc::michael_list::type_traits
- {
- typedef HashMapHdrTest::less less;
- };
-
- struct HRC_cmpmix_traits: public cc::michael_list::type_traits
- {
- typedef HashMapHdrTest::cmp compare;
- typedef HashMapHdrTest::less less;
- };
- }
-
- void HashMapHdrTest::Michael_HRC_cmp()
- {
- typedef cc::MichaelKVList< cds::gc::HRC, int, HashMapHdrTest::value_type, HRC_cmp_traits > list;
-
- // traits-based version
- typedef cc::MichaelHashMap< cds::gc::HRC, list, map_traits > map;
- test_int< map >();
-
- // option-based version
- typedef cc::MichaelHashMap< cds::gc::HRC, list,
- cc::michael_map::make_traits<
- cc::opt::hash< hash_int >
- ,cc::opt::item_counter< simple_item_counter >
- >::type
- > opt_map;
- test_int< opt_map >();
- }
-
- void HashMapHdrTest::Michael_HRC_less()
- {
- typedef cc::MichaelKVList< cds::gc::HRC, int, HashMapHdrTest::value_type, HRC_less_traits > list;
-
- // traits-based version
- typedef cc::MichaelHashMap< cds::gc::HRC, list, map_traits > map;
- test_int< map >();
-
- // option-based version
- typedef cc::MichaelHashMap< cds::gc::HRC, list,
- cc::michael_map::make_traits<
- cc::opt::hash< hash_int >
- ,cc::opt::item_counter< simple_item_counter >
- >::type
- > opt_map;
- test_int< opt_map >();
- }
-
- void HashMapHdrTest::Michael_HRC_cmpmix()
- {
- typedef cc::MichaelKVList< cds::gc::HRC, int, HashMapHdrTest::value_type, HRC_cmpmix_traits > list;
-
- // traits-based version
- typedef cc::MichaelHashMap< cds::gc::HRC, list, map_traits > map;
- test_int< map >();
-
- // option-based version
- typedef cc::MichaelHashMap< cds::gc::HRC, list,
- cc::michael_map::make_traits<
- cc::opt::hash< hash_int >
- ,cc::opt::item_counter< simple_item_counter >
- >::type
- > opt_map;
- test_int< opt_map >();
- }
-
-
-} // namespace map
-
+++ /dev/null
-//$$CDS-header$$
-
-#include "map/hdr_map.h"
-#include <cds/container/michael_list_hrc.h>
-#include <cds/container/split_list_map.h>
-
-namespace map {
-
- namespace {
- struct HRC_cmp_traits: public cc::split_list::type_traits
- {
- typedef cc::michael_list_tag ordered_list;
- typedef HashMapHdrTest::hash_int hash;
- typedef HashMapHdrTest::simple_item_counter item_counter;
- typedef cc::opt::v::relaxed_ordering memory_model;
- enum { dynamic_bucket_table = false };
-
- struct ordered_list_traits: public cc::michael_list::type_traits
- {
- typedef HashMapHdrTest::cmp compare;
- };
- };
-
- struct HRC_less_traits: public cc::split_list::type_traits
- {
- typedef cc::michael_list_tag ordered_list;
- typedef HashMapHdrTest::hash_int hash;
- typedef HashMapHdrTest::simple_item_counter item_counter;
- typedef cc::opt::v::sequential_consistent memory_model;
- enum { dynamic_bucket_table = false };
-
- struct ordered_list_traits: public cc::michael_list::type_traits
- {
- typedef HashMapHdrTest::less less;
- };
- };
-
- struct HRC_cmpmix_traits: public cc::split_list::type_traits
- {
- typedef cc::michael_list_tag ordered_list;
- typedef HashMapHdrTest::hash_int hash;
- typedef HashMapHdrTest::simple_item_counter item_counter;
-
- struct ordered_list_traits: public cc::michael_list::type_traits
- {
- typedef HashMapHdrTest::cmp compare;
- typedef std::less<HashMapHdrTest::key_type> less;
- };
- };
- }
-
- void HashMapHdrTest::Split_HRC_cmp()
- {
- // traits-based version
- typedef cc::SplitListMap< cds::gc::HRC, key_type, value_type, HRC_cmp_traits > map_type;
- test_int< map_type >();
-
- // option-based version
- typedef cc::SplitListMap< cds::gc::HRC,
- key_type,
- value_type,
- cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,cc::opt::hash< hash_int >
- ,cc::opt::item_counter< simple_item_counter >
- ,cc::opt::memory_model< cc::opt::v::relaxed_ordering >
- ,cc::split_list::dynamic_bucket_table< true >
- ,cc::split_list::ordered_list_traits<
- cc::michael_list::make_traits<
- cc::opt::compare< cmp >
- >::type
- >
- >::type
- > opt_map;
- test_int< opt_map >();
- }
-
- void HashMapHdrTest::Split_HRC_less()
- {
- // traits-based version
- typedef cc::SplitListMap< cds::gc::HRC, key_type, value_type, HRC_less_traits > map_type;
- test_int< map_type >();
-
- // option-based version
- typedef cc::SplitListMap< cds::gc::HRC,
- key_type,
- value_type,
- cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,cc::opt::hash< hash_int >
- ,cc::opt::item_counter< simple_item_counter >
- ,cc::opt::memory_model< cc::opt::v::relaxed_ordering >
- ,cc::split_list::dynamic_bucket_table< false >
- ,cc::split_list::ordered_list_traits<
- cc::michael_list::make_traits<
- cc::opt::less< less >
- >::type
- >
- >::type
- > opt_map;
- test_int< opt_map >();
- }
-
- void HashMapHdrTest::Split_HRC_cmpmix()
- {
- // traits-based version
- typedef cc::SplitListMap< cds::gc::HRC, key_type, value_type, HRC_cmpmix_traits > map_type;
- test_int< map_type >();
-
- // option-based version
- typedef cc::SplitListMap< cds::gc::HRC,
- key_type,
- value_type,
- cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,cc::opt::hash< hash_int >
- ,cc::opt::item_counter< simple_item_counter >
- ,cc::split_list::ordered_list_traits<
- cc::michael_list::make_traits<
- cc::opt::less< std::less<key_type> >
- ,cc::opt::compare< cmp >
- >::type
- >
- >::type
- > opt_map;
- test_int< opt_map >();
- }
-
-
-} // namespace map
-
void PTB_member_cmpmix();
void PTB_member_ic();
- void HRC_base_cmp();
- void HRC_base_less();
- void HRC_base_cmpmix();
- void HRC_base_ic();
-
void RCU_GPI_base_cmp();
void RCU_GPI_base_less();
void RCU_GPI_base_cmpmix();
CPPUNIT_TEST(PTB_member_cmpmix)
CPPUNIT_TEST(PTB_member_ic)
- CPPUNIT_TEST(HRC_base_cmp)
- CPPUNIT_TEST(HRC_base_less)
- CPPUNIT_TEST(HRC_base_cmpmix)
- CPPUNIT_TEST(HRC_base_ic)
-
CPPUNIT_TEST(RCU_GPI_base_cmp)
CPPUNIT_TEST(RCU_GPI_base_less)
CPPUNIT_TEST(RCU_GPI_base_cmpmix)
+++ /dev/null
-//$$CDS-header$$
-
-#include "ordered_list/hdr_intrusive_michael.h"
-#include <cds/intrusive/michael_list_hrc.h>
-
-namespace ordlist {
-
- void IntrusiveMichaelListHeaderTest::HRC_base_cmp()
- {
- typedef base_int_item< cds::gc::HRC > item;
- typedef ci::MichaelList< cds::gc::HRC
- ,item
- ,ci::michael_list::make_traits<
- ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
- ,co::compare< cmp<item> >
- ,ci::opt::disposer< faked_disposer >
- >::type
- > list;
- test_int<list>();
- }
- void IntrusiveMichaelListHeaderTest::HRC_base_less()
- {
- typedef base_int_item< cds::gc::HRC > item;
- typedef ci::MichaelList< cds::gc::HRC
- ,item
- ,ci::michael_list::make_traits<
- ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
- ,co::less< less<item> >
- ,ci::opt::disposer< faked_disposer >
- >::type
- > list;
- test_int<list>();
- }
- void IntrusiveMichaelListHeaderTest::HRC_base_cmpmix()
- {
- typedef base_int_item< cds::gc::HRC > item;
- typedef ci::MichaelList< cds::gc::HRC
- ,item
- ,ci::michael_list::make_traits<
- ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
- ,co::less< less<item> >
- ,co::compare< cmp<item> >
- ,ci::opt::disposer< faked_disposer >
- >::type
- > list;
- test_int<list>();
- }
- void IntrusiveMichaelListHeaderTest::HRC_base_ic()
- {
- typedef base_int_item< cds::gc::HRC > item;
- typedef ci::MichaelList< cds::gc::HRC
- ,item
- ,ci::michael_list::make_traits<
- ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
- ,co::less< less<item> >
- ,co::compare< cmp<item> >
- ,ci::opt::disposer< faked_disposer >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- > list;
- test_int<list>();
- }
-
-}
void PTB_cmpmix();
void PTB_ic();
- void HRC_cmp();
- void HRC_less();
- void HRC_cmpmix();
- void HRC_ic();
-
void RCU_GPI_cmp();
void RCU_GPI_less();
void RCU_GPI_cmpmix();
CPPUNIT_TEST(PTB_cmpmix)
CPPUNIT_TEST(PTB_ic)
- CPPUNIT_TEST(HRC_cmp)
- CPPUNIT_TEST(HRC_less)
- CPPUNIT_TEST(HRC_cmpmix)
- CPPUNIT_TEST(HRC_ic)
-
CPPUNIT_TEST(RCU_GPI_cmp)
CPPUNIT_TEST(RCU_GPI_less)
CPPUNIT_TEST(RCU_GPI_cmpmix)
+++ /dev/null
-//$$CDS-header$$
-
-#include "ordered_list/hdr_michael.h"
-#include <cds/container/michael_list_hrc.h>
-
-namespace ordlist {
- namespace {
- struct HRC_cmp_traits: public cc::michael_list::type_traits
- {
- typedef MichaelListTestHeader::cmp<MichaelListTestHeader::item> compare;
- };
- }
- void MichaelListTestHeader::HRC_cmp()
- {
- // traits-based version
- typedef cc::MichaelList< cds::gc::HRC, item, HRC_cmp_traits > list;
- test< list >();
-
- // option-based version
-
- typedef cc::MichaelList< cds::gc::HRC, item,
- cc::michael_list::make_traits<
- cc::opt::compare< cmp<item> >
- >::type
- > opt_list;
- test< opt_list >();
- }
-
- namespace {
- struct HRC_less_traits: public cc::michael_list::type_traits
- {
- typedef MichaelListTestHeader::lt<MichaelListTestHeader::item> less;
- };
- }
- void MichaelListTestHeader::HRC_less()
- {
- // traits-based version
- typedef cc::MichaelList< cds::gc::HRC, item, HRC_less_traits > list;
- test< list >();
-
- // option-based version
-
- typedef cc::MichaelList< cds::gc::HRC, item,
- cc::michael_list::make_traits<
- cc::opt::less< lt<item> >
- >::type
- > opt_list;
- test< opt_list >();
- }
-
- namespace {
- struct HRC_cmpmix_traits: public cc::michael_list::type_traits
- {
- typedef MichaelListTestHeader::cmp<MichaelListTestHeader::item> compare;
- typedef MichaelListTestHeader::lt<MichaelListTestHeader::item> less;
- };
- }
- void MichaelListTestHeader::HRC_cmpmix()
- {
- // traits-based version
- typedef cc::MichaelList< cds::gc::HRC, item, HRC_cmpmix_traits> list;
- test< list >();
-
- // option-based version
-
- typedef cc::MichaelList< cds::gc::HRC, item,
- cc::michael_list::make_traits<
- cc::opt::compare< cmp<item> >
- ,cc::opt::less< lt<item> >
- >::type
- > opt_list;
- test< opt_list >();
- }
-
- namespace {
- struct HRC_ic_traits: public cc::michael_list::type_traits
- {
- typedef MichaelListTestHeader::lt<MichaelListTestHeader::item> less;
- typedef cds::atomicity::item_counter item_counter;
- };
- }
- void MichaelListTestHeader::HRC_ic()
- {
- // traits-based version
- typedef cc::MichaelList< cds::gc::HRC, item, HRC_ic_traits > list;
- test< list >();
-
- // option-based version
-
- typedef cc::MichaelList< cds::gc::HRC, item,
- cc::michael_list::make_traits<
- cc::opt::less< lt<item> >
- ,cc::opt::item_counter< cds::atomicity::item_counter >
- >::type
- > opt_list;
- test< opt_list >();
- }
-
-} // namespace ordlist
-
void PTB_cmpmix();
void PTB_ic();
- void HRC_cmp();
- void HRC_less();
- void HRC_cmpmix();
- void HRC_ic();
-
void RCU_GPI_cmp();
void RCU_GPI_less();
void RCU_GPI_cmpmix();
CPPUNIT_TEST(PTB_cmpmix)
CPPUNIT_TEST(PTB_ic)
- CPPUNIT_TEST(HRC_cmp)
- CPPUNIT_TEST(HRC_less)
- CPPUNIT_TEST(HRC_cmpmix)
- CPPUNIT_TEST(HRC_ic)
-
CPPUNIT_TEST(RCU_GPI_cmp)
CPPUNIT_TEST(RCU_GPI_less)
CPPUNIT_TEST(RCU_GPI_cmpmix)
+++ /dev/null
-//$$CDS-header$$
-
-#include "ordered_list/hdr_michael_kv.h"
-#include <cds/container/michael_kvlist_hrc.h>
-
-namespace ordlist {
- namespace {
- struct HRC_cmp_traits: public cc::michael_list::type_traits
- {
- typedef MichaelKVListTestHeader::cmp<MichaelKVListTestHeader::key_type> compare;
- };
- }
- void MichaelKVListTestHeader::HRC_cmp()
- {
- // traits-based version
- typedef cc::MichaelKVList< cds::gc::HRC, key_type, value_type, HRC_cmp_traits > list;
- test< list >();
-
- // option-based version
-
- typedef cc::MichaelKVList< cds::gc::HRC, key_type, value_type,
- cc::michael_list::make_traits<
- cc::opt::compare< cmp<key_type> >
- >::type
- > opt_list;
- test< opt_list >();
- }
-
- namespace {
- struct HRC_less_traits: public cc::michael_list::type_traits
- {
- typedef MichaelKVListTestHeader::lt<MichaelKVListTestHeader::key_type> less;
- };
- }
- void MichaelKVListTestHeader::HRC_less()
- {
- // traits-based version
- typedef cc::MichaelKVList< cds::gc::HRC, key_type, value_type, HRC_less_traits > list;
- test< list >();
-
- // option-based version
-
- typedef cc::MichaelKVList< cds::gc::HRC, key_type, value_type,
- cc::michael_list::make_traits<
- cc::opt::less< lt<key_type> >
- >::type
- > opt_list;
- test< opt_list >();
- }
-
- namespace {
- struct HRC_cmpmix_traits: public cc::michael_list::type_traits
- {
- typedef MichaelKVListTestHeader::cmp<MichaelKVListTestHeader::key_type> compare;
- typedef MichaelKVListTestHeader::lt<MichaelKVListTestHeader::key_type> less;
- };
- }
- void MichaelKVListTestHeader::HRC_cmpmix()
- {
- // traits-based version
- typedef cc::MichaelKVList< cds::gc::HRC, key_type, value_type, HRC_cmpmix_traits> list;
- test< list >();
-
- // option-based version
-
- typedef cc::MichaelKVList< cds::gc::HRC, key_type, value_type,
- cc::michael_list::make_traits<
- cc::opt::compare< cmp<key_type> >
- ,cc::opt::less< lt<key_type> >
- >::type
- > opt_list;
- test< opt_list >();
- }
-
- namespace {
- struct HRC_ic_traits: public cc::michael_list::type_traits
- {
- typedef MichaelKVListTestHeader::lt<MichaelKVListTestHeader::key_type> less;
- typedef cds::atomicity::item_counter item_counter;
- };
- }
- void MichaelKVListTestHeader::HRC_ic()
- {
- // traits-based version
- typedef cc::MichaelKVList< cds::gc::HRC, key_type, value_type, HRC_ic_traits > list;
- test< list >();
-
- // option-based version
-
- typedef cc::MichaelKVList< cds::gc::HRC, key_type, value_type,
- cc::michael_list::make_traits<
- cc::opt::less< lt<key_type> >
- ,cc::opt::item_counter< cds::atomicity::item_counter >
- >::type
- > opt_list;
- test< opt_list >();
- }
-
-} // namespace ordlist
-
+++ /dev/null
-//$$CDS-header$$
-
-#include "set/hdr_intrusive_set.h"
-#include <cds/intrusive/michael_list_hrc.h>
-#include <cds/intrusive/michael_set.h>
-
-namespace set {
-
- void IntrusiveHashSetHdrTest::HRC_base_cmp()
- {
- typedef base_int_item< ci::michael_list::node<cds::gc::HRC> > item;
- typedef ci::MichaelList< cds::gc::HRC
- ,item
- ,ci::michael_list::make_traits<
- ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
- ,co::compare< cmp<item> >
- ,ci::opt::disposer< faked_disposer >
- >::type
- > bucket_type;
-
- typedef ci::MichaelHashSet< cds::gc::HRC, bucket_type,
- ci::michael_set::make_traits<
- co::hash< hash_int >
- >::type
- > set;
-
- test_int<set>();
- }
-
- void IntrusiveHashSetHdrTest::HRC_base_less()
- {
- typedef base_int_item< ci::michael_list::node<cds::gc::HRC> > item;
- typedef ci::MichaelList< cds::gc::HRC
- ,item
- ,ci::michael_list::make_traits<
- ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
- ,co::less< less<item> >
- ,ci::opt::disposer< faked_disposer >
- >::type
- > bucket_type;
-
- typedef ci::MichaelHashSet< cds::gc::HRC, bucket_type,
- ci::michael_set::make_traits<
- co::hash< hash_int >
- >::type
- > set;
-
- test_int<set>();
- }
-
- void IntrusiveHashSetHdrTest::HRC_base_cmpmix()
- {
- typedef base_int_item< ci::michael_list::node<cds::gc::HRC> > item;
- typedef ci::MichaelList< cds::gc::HRC
- ,item
- ,ci::michael_list::make_traits<
- ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
- ,co::less< less<item> >
- ,co::compare< cmp<item> >
- ,ci::opt::disposer< faked_disposer >
- >::type
- > bucket_type;
-
- typedef ci::MichaelHashSet< cds::gc::HRC, bucket_type,
- ci::michael_set::make_traits<
- co::hash< hash_int >
- ,co::item_counter< simple_item_counter >
- >::type
- > set;
-
- test_int<set>();
- }
-
-} // namespace set
void PTB_member_less();
void PTB_member_cmpmix();
- void HRC_base_cmp();
- void HRC_base_less();
- void HRC_base_cmpmix();
-
void RCU_GPI_base_cmp();
void RCU_GPI_base_less();
void RCU_GPI_base_cmpmix();
void split_st_PTB_member_less();
void split_st_PTB_member_cmpmix();
- void split_dyn_HRC_base_cmp();
- void split_dyn_HRC_base_less();
- void split_dyn_HRC_base_cmpmix();
- void split_st_HRC_base_cmp();
- void split_st_HRC_base_less();
- void split_st_HRC_base_cmpmix();
-
void split_dyn_RCU_GPI_base_cmp();
void split_dyn_RCU_GPI_base_less();
void split_dyn_RCU_GPI_base_cmpmix();
CPPUNIT_TEST(PTB_member_less)
CPPUNIT_TEST(PTB_member_cmpmix)
- CPPUNIT_TEST(HRC_base_cmp)
- CPPUNIT_TEST(HRC_base_less)
- CPPUNIT_TEST(HRC_base_cmpmix)
-
CPPUNIT_TEST(RCU_GPI_base_cmp)
CPPUNIT_TEST(RCU_GPI_base_less)
CPPUNIT_TEST(RCU_GPI_base_cmpmix)
CPPUNIT_TEST(split_st_PTB_member_less)
CPPUNIT_TEST(split_st_PTB_member_cmpmix)
- CPPUNIT_TEST(split_dyn_HRC_base_cmp)
- CPPUNIT_TEST(split_dyn_HRC_base_less)
- CPPUNIT_TEST(split_dyn_HRC_base_cmpmix)
- CPPUNIT_TEST(split_st_HRC_base_cmp)
- CPPUNIT_TEST(split_st_HRC_base_less)
- CPPUNIT_TEST(split_st_HRC_base_cmpmix)
-
CPPUNIT_TEST(split_dyn_RCU_GPI_base_cmp)
CPPUNIT_TEST(split_dyn_RCU_GPI_base_less)
CPPUNIT_TEST(split_dyn_RCU_GPI_base_cmpmix)
+++ /dev/null
-//$$CDS-header$$
-
-#include "set/hdr_intrusive_set.h"
-#include <cds/intrusive/michael_list_hrc.h>
-#include <cds/intrusive/split_list.h>
-
-namespace set {
-
- void IntrusiveHashSetHdrTest::split_dyn_HRC_base_cmp()
- {
- typedef base_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::HRC> > > item;
- typedef ci::MichaelList< cds::gc::HRC
- ,item
- ,ci::michael_list::make_traits<
- ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
- ,co::compare< cmp<item> >
- ,ci::opt::disposer< faked_disposer >
- >::type
- > ord_list;
-
- typedef ci::SplitListSet< cds::gc::HRC, ord_list,
- ci::split_list::make_traits<
- co::hash< hash_int >
- ,ci::split_list::dynamic_bucket_table<true>
- ,co::memory_model<co::v::relaxed_ordering>
- >::type
- > set;
- static_assert( set::options::dynamic_bucket_table, "Set has static bucket table" );
-
- test_int<set>();
- }
-
- void IntrusiveHashSetHdrTest::split_dyn_HRC_base_less()
- {
- typedef base_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::HRC> > > item;
- typedef ci::MichaelList< cds::gc::HRC
- ,item
- ,ci::michael_list::make_traits<
- ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
- ,co::less< less<item> >
- ,ci::opt::disposer< faked_disposer >
- >::type
- > ord_list;
-
- typedef ci::SplitListSet< cds::gc::HRC, ord_list,
- ci::split_list::make_traits<
- co::hash< hash_int >
- ,co::memory_model<co::v::sequential_consistent>
- >::type
- > set;
- static_assert( set::options::dynamic_bucket_table, "Set has static bucket table" );
-
- test_int<set>();
- }
-
- void IntrusiveHashSetHdrTest::split_dyn_HRC_base_cmpmix()
- {
- typedef base_int_item< ci::split_list::node<ci::michael_list::node<cds::gc::HRC> > > item;
- typedef ci::MichaelList< cds::gc::HRC
- ,item
- ,ci::michael_list::make_traits<
- ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
- ,co::less< less<item> >
- ,co::compare< cmp<item> >
- ,ci::opt::disposer< faked_disposer >
- >::type
- > ord_list;
-
- typedef ci::SplitListSet< cds::gc::HRC, ord_list,
- ci::split_list::make_traits<
- co::hash< hash_int >
- ,co::item_counter< simple_item_counter >
- ,ci::split_list::dynamic_bucket_table<true>
- >::type
- > set;
- static_assert( set::options::dynamic_bucket_table, "Set has static bucket table" );
-
- test_int<set>();
- }
-
- // Static bucket table
- void IntrusiveHashSetHdrTest::split_st_HRC_base_cmp()
- {
- typedef base_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::HRC> > > item;
- typedef ci::MichaelList< cds::gc::HRC
- ,item
- ,ci::michael_list::make_traits<
- ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
- ,co::compare< cmp<item> >
- ,ci::opt::disposer< faked_disposer >
- >::type
- > ord_list;
-
- typedef ci::SplitListSet< cds::gc::HRC, ord_list,
- ci::split_list::make_traits<
- co::hash< hash_int >
- ,ci::split_list::dynamic_bucket_table<false>
- ,co::memory_model<co::v::relaxed_ordering>
- >::type
- > set;
- static_assert( !set::options::dynamic_bucket_table, "Set has dynamic bucket table" );
-
- test_int<set>();
- }
-
- void IntrusiveHashSetHdrTest::split_st_HRC_base_less()
- {
- typedef base_int_item< ci::split_list::node< ci::michael_list::node<cds::gc::HRC> > > item;
- typedef ci::MichaelList< cds::gc::HRC
- ,item
- ,ci::michael_list::make_traits<
- ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
- ,co::less< less<item> >
- ,ci::opt::disposer< faked_disposer >
- >::type
- > ord_list;
-
- typedef ci::SplitListSet< cds::gc::HRC, ord_list,
- ci::split_list::make_traits<
- co::hash< hash_int >
- ,ci::split_list::dynamic_bucket_table<false>
- ,co::memory_model<co::v::sequential_consistent>
- >::type
- > set;
- static_assert( !set::options::dynamic_bucket_table, "Set has dynamic bucket table" );
-
- test_int<set>();
- }
-
- void IntrusiveHashSetHdrTest::split_st_HRC_base_cmpmix()
- {
- typedef base_int_item< ci::split_list::node<ci::michael_list::node<cds::gc::HRC> > > item;
- typedef ci::MichaelList< cds::gc::HRC
- ,item
- ,ci::michael_list::make_traits<
- ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::HRC> > >
- ,co::less< less<item> >
- ,co::compare< cmp<item> >
- ,ci::opt::disposer< faked_disposer >
- >::type
- > ord_list;
-
- typedef ci::SplitListSet< cds::gc::HRC, ord_list,
- ci::split_list::make_traits<
- co::hash< hash_int >
- ,co::item_counter< simple_item_counter >
- ,ci::split_list::dynamic_bucket_table<false>
- >::type
- > set;
- static_assert( !set::options::dynamic_bucket_table, "Set has dynamic bucket table" );
-
- test_int<set>();
- }
-
-} // namespace set
+++ /dev/null
-//$$CDS-header$$
-
-#include "set/hdr_set.h"
-#include <cds/container/michael_list_hrc.h>
-#include <cds/container/michael_set.h>
-
-namespace set {
-
- namespace {
- struct set_traits: public cc::michael_set::type_traits
- {
- typedef HashSetHdrTest::hash_int hash;
- typedef HashSetHdrTest::simple_item_counter item_counter;
- };
-
- struct HRC_cmp_traits: public cc::michael_list::type_traits
- {
- typedef HashSetHdrTest::cmp<HashSetHdrTest::item> compare;
- };
-
- struct HRC_less_traits: public cc::michael_list::type_traits
- {
- typedef HashSetHdrTest::less<HashSetHdrTest::item> less;
- };
-
- struct HRC_cmpmix_traits: public cc::michael_list::type_traits
- {
- typedef HashSetHdrTest::cmp<HashSetHdrTest::item> compare;
- typedef HashSetHdrTest::less<HashSetHdrTest::item> less;
- };
- }
-
- void HashSetHdrTest::Michael_HRC_cmp()
- {
- typedef cc::MichaelList< cds::gc::HRC, item, HRC_cmp_traits > list;
-
- // traits-based version
- typedef cc::MichaelHashSet< cds::gc::HRC, list, set_traits > set;
- test_int< set >();
-
- // option-based version
- typedef cc::MichaelHashSet< cds::gc::HRC, list,
- cc::michael_set::make_traits<
- cc::opt::hash< hash_int >
- ,cc::opt::item_counter< simple_item_counter >
- >::type
- > opt_set;
- test_int< opt_set >();
- }
-
- void HashSetHdrTest::Michael_HRC_less()
- {
- typedef cc::MichaelList< cds::gc::HRC, item, HRC_less_traits > list;
-
- // traits-based version
- typedef cc::MichaelHashSet< cds::gc::HRC, list, set_traits > set;
- test_int< set >();
-
- // option-based version
- typedef cc::MichaelHashSet< cds::gc::HRC, list,
- cc::michael_set::make_traits<
- cc::opt::hash< hash_int >
- ,cc::opt::item_counter< simple_item_counter >
- >::type
- > opt_set;
- test_int< opt_set >();
- }
-
- void HashSetHdrTest::Michael_HRC_cmpmix()
- {
- typedef cc::MichaelList< cds::gc::HRC, item, HRC_cmpmix_traits > list;
-
- // traits-based version
- typedef cc::MichaelHashSet< cds::gc::HRC, list, set_traits > set;
- test_int< set >();
-
- // option-based version
- typedef cc::MichaelHashSet< cds::gc::HRC, list,
- cc::michael_set::make_traits<
- cc::opt::hash< hash_int >
- ,cc::opt::item_counter< simple_item_counter >
- >::type
- > opt_set;
- test_int< opt_set >();
- }
-
-
-} // namespace set
void Michael_PTB_less();
void Michael_PTB_cmpmix();
- void Michael_HRC_cmp();
- void Michael_HRC_less();
- void Michael_HRC_cmpmix();
-
void Michael_RCU_GPI_cmp();
void Michael_RCU_GPI_less();
void Michael_RCU_GPI_cmpmix();
void Split_PTB_less();
void Split_PTB_cmpmix();
- void Split_HRC_cmp();
- void Split_HRC_less();
- void Split_HRC_cmpmix();
-
void Split_RCU_GPI_cmp();
void Split_RCU_GPI_less();
void Split_RCU_GPI_cmpmix();
CPPUNIT_TEST(Michael_PTB_less)
CPPUNIT_TEST(Michael_PTB_cmpmix)
- CPPUNIT_TEST(Michael_HRC_cmp)
- CPPUNIT_TEST(Michael_HRC_less)
- CPPUNIT_TEST(Michael_HRC_cmpmix)
-
CPPUNIT_TEST(Michael_RCU_GPI_cmp)
CPPUNIT_TEST(Michael_RCU_GPI_less)
CPPUNIT_TEST(Michael_RCU_GPI_cmpmix)
CPPUNIT_TEST(Split_PTB_less)
CPPUNIT_TEST(Split_PTB_cmpmix)
- CPPUNIT_TEST(Split_HRC_cmp)
- CPPUNIT_TEST(Split_HRC_less)
- CPPUNIT_TEST(Split_HRC_cmpmix)
-
CPPUNIT_TEST(Split_RCU_GPI_cmp)
CPPUNIT_TEST(Split_RCU_GPI_less)
CPPUNIT_TEST(Split_RCU_GPI_cmpmix)
+++ /dev/null
-//$$CDS-header$$
-
-#include "set/hdr_set.h"
-#include <cds/container/michael_list_hrc.h>
-#include <cds/container/split_list_set.h>
-
-namespace set {
-
- namespace {
- struct HRC_cmp_traits: public cc::split_list::type_traits
- {
- typedef cc::michael_list_tag ordered_list;
- typedef HashSetHdrTest::hash_int hash;
- typedef HashSetHdrTest::simple_item_counter item_counter;
- typedef cc::opt::v::relaxed_ordering memory_model;
- enum { dynamic_bucket_table = false };
-
- struct ordered_list_traits: public cc::michael_list::type_traits
- {
- typedef HashSetHdrTest::cmp<HashSetHdrTest::item> compare;
- };
- };
-
- struct HRC_less_traits: public cc::split_list::type_traits
- {
- typedef cc::michael_list_tag ordered_list;
- typedef HashSetHdrTest::hash_int hash;
- typedef HashSetHdrTest::simple_item_counter item_counter;
- typedef cc::opt::v::sequential_consistent memory_model;
- enum { dynamic_bucket_table = false };
-
- struct ordered_list_traits: public cc::michael_list::type_traits
- {
- typedef HashSetHdrTest::less<HashSetHdrTest::item> less;
- };
- };
-
- struct HRC_cmpmix_traits: public cc::split_list::type_traits
- {
- typedef cc::michael_list_tag ordered_list;
- typedef HashSetHdrTest::hash_int hash;
- typedef HashSetHdrTest::simple_item_counter item_counter;
-
- struct ordered_list_traits: public cc::michael_list::type_traits
- {
- typedef HashSetHdrTest::cmp<HashSetHdrTest::item> compare;
- typedef HashSetHdrTest::less<HashSetHdrTest::item> less;
- };
- };
- }
-
- void HashSetHdrTest::Split_HRC_cmp()
- {
- // traits-based version
- typedef cc::SplitListSet< cds::gc::HRC, item, HRC_cmp_traits > set;
-
- test_int< set >();
-
- // option-based version
- typedef cc::SplitListSet< cds::gc::HRC, item,
- cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,cc::opt::hash< hash_int >
- ,cc::opt::item_counter< simple_item_counter >
- ,cc::opt::memory_model< cc::opt::v::relaxed_ordering >
- ,cc::split_list::dynamic_bucket_table< true >
- ,cc::split_list::ordered_list_traits<
- cc::michael_list::make_traits<
- cc::opt::compare< cmp<item> >
- >::type
- >
- >::type
- > opt_set;
- test_int< opt_set >();
- }
-
- void HashSetHdrTest::Split_HRC_less()
- {
- // traits-based version
- typedef cc::SplitListSet< cds::gc::HRC, item, HRC_less_traits > set;
-
- test_int< set >();
-
- // option-based version
- typedef cc::SplitListSet< cds::gc::HRC, item,
- cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,cc::opt::hash< hash_int >
- ,cc::opt::item_counter< simple_item_counter >
- ,cc::opt::memory_model< cc::opt::v::sequential_consistent >
- ,cc::split_list::dynamic_bucket_table< false >
- ,cc::split_list::ordered_list_traits<
- cc::michael_list::make_traits<
- cc::opt::less< less<item> >
- >::type
- >
- >::type
- > opt_set;
- test_int< opt_set >();
- }
-
- void HashSetHdrTest::Split_HRC_cmpmix()
- {
- // traits-based version
- typedef cc::SplitListSet< cds::gc::HRC, item, HRC_cmpmix_traits > set;
- test_int< set >();
-
- // option-based version
- typedef cc::SplitListSet< cds::gc::HRC, item,
- cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,cc::opt::hash< hash_int >
- ,cc::opt::item_counter< simple_item_counter >
- ,cc::split_list::ordered_list_traits<
- cc::michael_list::make_traits<
- cc::opt::less< less<item> >
- ,cc::opt::compare< cmp<item> >
- >::type
- >
- >::type
- > opt_set;
- test_int< opt_set >();
- }
-
-
-} // namespace set
-
-
#define CDSUNIT_DECLARE_MichaelMap \
TEST_MAP_EXTRACT(MichaelMap_HP_cmp_stdAlloc) \
TEST_MAP_EXTRACT(MichaelMap_HP_less_michaelAlloc) \
- TEST_MAP_EXTRACT(MichaelMap_HRC_cmp_stdAlloc) \
- TEST_MAP_EXTRACT(MichaelMap_HRC_less_michaelAlloc) \
TEST_MAP_EXTRACT(MichaelMap_PTB_cmp_stdAlloc) \
TEST_MAP_EXTRACT(MichaelMap_PTB_less_michaelAlloc) \
TEST_MAP_EXTRACT(MichaelMap_RCU_GPI_cmp_stdAlloc) \
TEST_MAP_EXTRACT(MichaelMap_RCU_GPT_less_michaelAlloc) \
TEST_MAP_EXTRACT(MichaelMap_Lazy_HP_cmp_stdAlloc) \
TEST_MAP_EXTRACT(MichaelMap_Lazy_HP_less_michaelAlloc) \
- TEST_MAP_EXTRACT(MichaelMap_Lazy_HRC_cmp_stdAlloc) \
- TEST_MAP_EXTRACT(MichaelMap_Lazy_HRC_less_michaelAlloc) \
TEST_MAP_EXTRACT(MichaelMap_Lazy_PTB_cmp_stdAlloc) \
TEST_MAP_EXTRACT(MichaelMap_Lazy_PTB_less_michaelAlloc) \
TEST_MAP_EXTRACT(MichaelMap_Lazy_RCU_GPI_cmp_stdAlloc) \
#define CDSUNIT_TEST_MichaelMap \
CPPUNIT_TEST(MichaelMap_HP_cmp_stdAlloc) \
CPPUNIT_TEST(MichaelMap_HP_less_michaelAlloc) \
- /*CPPUNIT_TEST(MichaelMap_HRC_cmp_stdAlloc)*/ \
- /*CPPUNIT_TEST(MichaelMap_HRC_less_michaelAlloc)*/ \
CPPUNIT_TEST(MichaelMap_PTB_cmp_stdAlloc) \
CPPUNIT_TEST(MichaelMap_PTB_less_michaelAlloc) \
CPPUNIT_TEST(MichaelMap_RCU_GPI_cmp_stdAlloc) \
CPPUNIT_TEST(MichaelMap_RCU_GPT_less_michaelAlloc) \
CPPUNIT_TEST(MichaelMap_Lazy_HP_cmp_stdAlloc) \
CPPUNIT_TEST(MichaelMap_Lazy_HP_less_michaelAlloc) \
- /*CPPUNIT_TEST(MichaelMap_Lazy_HRC_cmp_stdAlloc)*/ \
- /*CPPUNIT_TEST(MichaelMap_Lazy_HRC_less_michaelAlloc)*/ \
CPPUNIT_TEST(MichaelMap_Lazy_PTB_cmp_stdAlloc) \
CPPUNIT_TEST(MichaelMap_Lazy_PTB_less_michaelAlloc) \
CPPUNIT_TEST(MichaelMap_Lazy_RCU_GPI_cmp_stdAlloc) \
TEST_MAP_EXTRACT(SplitList_Michael_HP_st_cmp)\
TEST_MAP_EXTRACT(SplitList_Michael_HP_dyn_less)\
TEST_MAP_EXTRACT(SplitList_Michael_HP_st_less)\
- TEST_MAP_EXTRACT(SplitList_Michael_HRC_dyn_cmp)\
- TEST_MAP_EXTRACT(SplitList_Michael_HRC_st_cmp)\
- TEST_MAP_EXTRACT(SplitList_Michael_HRC_dyn_less)\
- TEST_MAP_EXTRACT(SplitList_Michael_HRC_st_less)\
TEST_MAP_EXTRACT(SplitList_Michael_PTB_dyn_cmp)\
TEST_MAP_EXTRACT(SplitList_Michael_PTB_st_cmp)\
TEST_MAP_EXTRACT(SplitList_Michael_PTB_dyn_less)\
TEST_MAP_EXTRACT(SplitList_Lazy_HP_st_cmp)\
TEST_MAP_EXTRACT(SplitList_Lazy_HP_dyn_less)\
TEST_MAP_EXTRACT(SplitList_Lazy_HP_st_less)\
- TEST_MAP_EXTRACT(SplitList_Lazy_HRC_dyn_cmp)\
- TEST_MAP_EXTRACT(SplitList_Lazy_HRC_st_cmp)\
- TEST_MAP_EXTRACT(SplitList_Lazy_HRC_dyn_less)\
- TEST_MAP_EXTRACT(SplitList_Lazy_HRC_st_less)\
TEST_MAP_EXTRACT(SplitList_Lazy_PTB_dyn_cmp)\
TEST_MAP_EXTRACT(SplitList_Lazy_PTB_st_cmp)\
TEST_MAP_EXTRACT(SplitList_Lazy_PTB_dyn_less)\
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_HRC_dyn_cmp)*/\
- /*CPPUNIT_TEST(SplitList_Michael_HRC_st_cmp)*/\
- /*CPPUNIT_TEST(SplitList_Michael_HRC_dyn_less)*/\
- /*CPPUNIT_TEST(SplitList_Michael_HRC_st_less)*/\
CPPUNIT_TEST(SplitList_Michael_PTB_dyn_cmp)\
CPPUNIT_TEST(SplitList_Michael_PTB_st_cmp)\
CPPUNIT_TEST(SplitList_Michael_PTB_dyn_less)\
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_HRC_dyn_cmp)*/\
- /*CPPUNIT_TEST(SplitList_Lazy_HRC_st_cmp)*/\
- /*CPPUNIT_TEST(SplitList_Lazy_HRC_dyn_less)*/\
- /*CPPUNIT_TEST(SplitList_Lazy_HRC_st_less)*/\
CPPUNIT_TEST(SplitList_Lazy_PTB_dyn_cmp)\
CPPUNIT_TEST(SplitList_Lazy_PTB_st_cmp)\
CPPUNIT_TEST(SplitList_Lazy_PTB_dyn_less)\
#include <cds/urcu/signal_threaded.h>
#include <cds/container/michael_kvlist_hp.h>
-#include <cds/container/michael_kvlist_hrc.h>
#include <cds/container/michael_kvlist_dhp.h>
#include <cds/container/michael_kvlist_rcu.h>
#include <cds/container/michael_kvlist_nogc.h>
#include <cds/container/lazy_kvlist_hp.h>
-#include <cds/container/lazy_kvlist_hrc.h>
#include <cds/container/lazy_kvlist_ptb.h>
#include <cds/container/lazy_kvlist_rcu.h>
#include <cds/container/lazy_kvlist_nogc.h>
#include <cds/container/cuckoo_map.h>
#include <cds/container/skip_list_map_hp.h>
-#include <cds/container/skip_list_map_hrc.h>
#include <cds/container/skip_list_map_ptb.h>
#include <cds/container/skip_list_map_rcu.h>
#include <cds/container/skip_list_map_nogc.h>
>::type
> MichaelList_HP_less_michaelAlloc;
- typedef cc::MichaelKVList< cds::gc::HRC, Key, Value,
- typename cc::michael_list::make_traits<
- co::compare< compare >
- >::type
- > MichaelList_HRC_cmp_stdAlloc;
-
- typedef cc::MichaelKVList< cds::gc::HRC, Key, Value,
- typename cc::michael_list::make_traits<
- co::compare< compare >
- ,co::memory_model< co::v::sequential_consistent >
- >::type
- > MichaelList_HRC_cmp_stdAlloc_seqcst;
-
- typedef cc::MichaelKVList< cds::gc::HRC, Key, Value,
- typename cc::michael_list::make_traits<
- co::compare< compare >,
- co::allocator< memory::MichaelAllocator<int> >
- >::type
- > MichaelList_HRC_cmp_michaelAlloc;
-
- typedef cc::MichaelKVList< cds::gc::HRC, Key, Value,
- typename cc::michael_list::make_traits<
- co::less< less >
- >::type
- > MichaelList_HRC_less_stdAlloc;
-
- typedef cc::MichaelKVList< cds::gc::HRC, Key, Value,
- typename cc::michael_list::make_traits<
- co::less< less >
- ,co::memory_model< co::v::sequential_consistent >
- >::type
- > MichaelList_HRC_less_stdAlloc_seqcst;
-
- typedef cc::MichaelKVList< cds::gc::HRC, Key, Value,
- typename cc::michael_list::make_traits<
- co::less< less >,
- co::allocator< memory::MichaelAllocator<int> >
- >::type
- > MichaelList_HRC_less_michaelAlloc;
-
typedef cc::MichaelKVList< cds::gc::PTB, Key, Value,
typename cc::michael_list::make_traits<
co::compare< compare >
>::type
> MichaelMap_HP_less_michaelAlloc;
- typedef cc::MichaelHashMap< cds::gc::HRC, MichaelList_HRC_cmp_stdAlloc,
- typename cc::michael_map::make_traits<
- co::hash< hash >
- >::type
- > MichaelMap_HRC_cmp_stdAlloc;
-
- typedef cc::MichaelHashMap< cds::gc::HRC, MichaelList_HRC_cmp_stdAlloc_seqcst,
- typename cc::michael_map::make_traits<
- co::hash< hash >
- >::type
- > MichaelMap_HRC_cmp_stdAlloc_seqcst;
-
- typedef cc::MichaelHashMap< cds::gc::HRC, MichaelList_HRC_cmp_michaelAlloc,
- typename cc::michael_map::make_traits<
- co::hash< hash >,
- co::allocator< memory::MichaelAllocator<int> >
- >::type
- > MichaelMap_HRC_cmp_michaelAlloc;
-
- typedef cc::MichaelHashMap< cds::gc::HRC, MichaelList_HRC_less_stdAlloc,
- typename cc::michael_map::make_traits<
- co::hash< hash >
- >::type
- > MichaelMap_HRC_less_stdAlloc;
-
- typedef cc::MichaelHashMap< cds::gc::HRC, MichaelList_HRC_less_stdAlloc_seqcst,
- typename cc::michael_map::make_traits<
- co::hash< hash >
- >::type
- > MichaelMap_HRC_less_stdAlloc_seqcst;
-
- typedef cc::MichaelHashMap< cds::gc::HRC, MichaelList_HRC_less_michaelAlloc,
- typename cc::michael_map::make_traits<
- co::hash< hash >,
- co::allocator< memory::MichaelAllocator<int> >
- >::type
- > MichaelMap_HRC_less_michaelAlloc;
-
typedef cc::MichaelHashMap< cds::gc::PTB, MichaelList_PTB_cmp_stdAlloc,
typename cc::michael_map::make_traits<
co::hash< hash >
>::type
> LazyList_HP_less_michaelAlloc;
- typedef cc::LazyKVList< cds::gc::HRC, Key, Value,
- typename cc::lazy_list::make_traits<
- co::compare< compare >
- >::type
- > LazyList_HRC_cmp_stdAlloc;
-
- typedef cc::LazyKVList< cds::gc::HRC, Key, Value,
- typename cc::lazy_list::make_traits<
- co::compare< compare >
- ,co::memory_model< co::v::sequential_consistent >
- >::type
- > LazyList_HRC_cmp_stdAlloc_seqcst;
-
- typedef cc::LazyKVList< cds::gc::HRC, Key, Value,
- typename cc::lazy_list::make_traits<
- co::compare< compare >,
- co::allocator< memory::MichaelAllocator<int> >
- >::type
- > LazyList_HRC_cmp_michaelAlloc;
-
- typedef cc::LazyKVList< cds::gc::HRC, Key, Value,
- typename cc::lazy_list::make_traits<
- co::less< less >
- >::type
- > LazyList_HRC_less_stdAlloc;
-
- typedef cc::LazyKVList< cds::gc::HRC, Key, Value,
- typename cc::lazy_list::make_traits<
- co::less< less >
- ,co::memory_model< co::v::sequential_consistent >
- >::type
- > LazyList_HRC_less_stdAlloc_seqcst;
-
- typedef cc::LazyKVList< cds::gc::HRC, Key, Value,
- typename cc::lazy_list::make_traits<
- co::less< less >,
- co::allocator< memory::MichaelAllocator<int> >
- >::type
- > LazyList_HRC_less_michaelAlloc;
-
typedef cc::LazyKVList< cds::gc::PTB, Key, Value,
typename cc::lazy_list::make_traits<
co::compare< compare >
>::type
> MichaelMap_Lazy_HP_less_michaelAlloc;
- typedef cc::MichaelHashMap< cds::gc::HRC, LazyList_HRC_cmp_stdAlloc,
- typename cc::michael_map::make_traits<
- co::hash< hash >
- >::type
- > MichaelMap_Lazy_HRC_cmp_stdAlloc;
-
- typedef cc::MichaelHashMap< cds::gc::HRC, LazyList_HRC_cmp_stdAlloc_seqcst,
- typename cc::michael_map::make_traits<
- co::hash< hash >
- >::type
- > MichaelMap_Lazy_HRC_cmp_stdAlloc_seqcst;
-
- typedef cc::MichaelHashMap< cds::gc::HRC, LazyList_HRC_cmp_michaelAlloc,
- typename cc::michael_map::make_traits<
- co::hash< hash >,
- co::allocator< memory::MichaelAllocator<int> >
- >::type
- > MichaelMap_Lazy_HRC_cmp_michaelAlloc;
-
- typedef cc::MichaelHashMap< cds::gc::HRC, LazyList_HRC_less_stdAlloc,
- typename cc::michael_map::make_traits<
- co::hash< hash >
- >::type
- > MichaelMap_Lazy_HRC_less_stdAlloc;
-
- typedef cc::MichaelHashMap< cds::gc::HRC, LazyList_HRC_less_stdAlloc_seqcst,
- typename cc::michael_map::make_traits<
- co::hash< hash >
- >::type
- > MichaelMap_Lazy_HRC_less_stdAlloc_seqcst;
-
- typedef cc::MichaelHashMap< cds::gc::HRC, LazyList_HRC_less_michaelAlloc,
- typename cc::michael_map::make_traits<
- co::hash< hash >,
- co::allocator< memory::MichaelAllocator<int> >
- >::type
- > MichaelMap_Lazy_HRC_less_michaelAlloc;
-
typedef cc::MichaelHashMap< cds::gc::PTB, LazyList_PTB_cmp_stdAlloc,
typename cc::michael_map::make_traits<
co::hash< hash >
{};
typedef cc::SplitListMap< cds::gc::HP, Key, Value, traits_SplitList_Michael_HP_st_less_seqcst > SplitList_Michael_HP_st_less_seqcst;
- // HRC
- typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,co::hash< hash >
- ,cc::split_list::ordered_list_traits<
- typename cc::michael_list::make_traits<
- co::compare< compare >
- >::type
- >
- >::type
- > SplitList_Michael_HRC_dyn_cmp;
-
- typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,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_HRC_dyn_cmp_seqcst;
-
- typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,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_HRC_st_cmp;
-
- typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,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_HRC_st_cmp_seqcst;
-
- // HRC + less
- typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,co::hash< hash >
- ,cc::split_list::ordered_list_traits<
- typename cc::michael_list::make_traits<
- co::less< less >
- >::type
- >
- >::type
- > SplitList_Michael_HRC_dyn_less;
-
- typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,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_HRC_dyn_less_seqcst;
-
- typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,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_HRC_st_less;
-
- typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,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_HRC_st_less_seqcst;
-
// PTB
typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
typename cc::split_list::make_traits<
>::type
> SplitList_Lazy_HP_st_less_seqcst;
- // HRC
- typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::lazy_list_tag>
- ,co::hash< hash >
- ,cc::split_list::ordered_list_traits<
- typename cc::lazy_list::make_traits<
- co::compare< compare >
- >::type
- >
- >::type
- > SplitList_Lazy_HRC_dyn_cmp;
-
- typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::lazy_list_tag>
- ,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_HRC_dyn_cmp_seqcst;
-
- typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::lazy_list_tag>
- ,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_HRC_st_cmp;
-
- typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::lazy_list_tag>
- ,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_HRC_st_cmp_seqcst;
-
- // HRC + less
- typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::lazy_list_tag>
- ,co::hash< hash >
- ,cc::split_list::ordered_list_traits<
- typename cc::lazy_list::make_traits<
- co::less< less >
- >::type
- >
- >::type
- > SplitList_Lazy_HRC_dyn_less;
-
- typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::lazy_list_tag>
- ,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_HRC_dyn_less_seqcst;
-
- typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::lazy_list_tag>
- ,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_HRC_st_less;
-
- typedef cc::SplitListMap< cds::gc::HRC, Key, Value,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::lazy_list_tag>
- ,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_HRC_st_less_seqcst;
-
-
// PTB
typedef cc::SplitListMap< cds::gc::PTB, Key, Value,
typename cc::split_list::make_traits<
{};
typedef cc::SkipListMap< cds::gc::HP, Key, Value, traits_SkipListMap_hp_cmp_xorshift_stat > SkipListMap_hp_cmp_xorshift_stat;
- // ***************************************************************************
- // SkipListMap - HRC
-
- class traits_SkipListMap_hrc_less_pascal: public cc::skip_list::make_traits <
- co::less< less >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- {};
- typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_less_pascal > SkipListMap_hrc_less_pascal;
-
- class traits_SkipListMap_hrc_less_pascal_seqcst: public cc::skip_list::make_traits <
- co::less< less >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
- ,co::memory_model< co::v::sequential_consistent >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- {};
- typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_less_pascal_seqcst > SkipListMap_hrc_less_pascal_seqcst;
-
- class traits_SkipListMap_hrc_less_pascal_stat: public cc::skip_list::make_traits <
- co::less< less >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
- ,co::stat< cc::skip_list::stat<> >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- {};
- typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_less_pascal_stat > SkipListMap_hrc_less_pascal_stat;
-
- class traits_SkipListMap_hrc_cmp_pascal: public cc::skip_list::make_traits <
- co::compare< compare >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- {};
- typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_cmp_pascal > SkipListMap_hrc_cmp_pascal;
-
- class traits_SkipListMap_hrc_cmp_pascal_stat: public cc::skip_list::make_traits <
- co::compare< compare >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
- ,co::stat< cc::skip_list::stat<> >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- {};
- typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_cmp_pascal_stat > SkipListMap_hrc_cmp_pascal_stat;
-
- class traits_SkipListMap_hrc_less_xorshift: public cc::skip_list::make_traits <
- co::less< less >
- ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- {};
- typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_less_xorshift > SkipListMap_hrc_less_xorshift;
-
- class traits_SkipListMap_hrc_less_xorshift_stat: public cc::skip_list::make_traits <
- co::less< less >
- ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
- ,co::stat< cc::skip_list::stat<> >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- {};
- typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_less_xorshift_stat > SkipListMap_hrc_less_xorshift_stat;
-
- class traits_SkipListMap_hrc_cmp_xorshift: public cc::skip_list::make_traits <
- co::compare< compare >
- ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- {};
- typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_cmp_xorshift > SkipListMap_hrc_cmp_xorshift;
-
- class traits_SkipListMap_hrc_cmp_xorshift_stat: public cc::skip_list::make_traits <
- co::compare< compare >
- ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
- ,co::stat< cc::skip_list::stat<> >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- {};
- typedef cc::SkipListMap< cds::gc::HRC, Key, Value, traits_SkipListMap_hrc_cmp_xorshift_stat > SkipListMap_hrc_cmp_xorshift_stat;
-
// ***************************************************************************
// SkipListMap - PTB
#define CDSUNIT_DECLARE_MichaelSet \
TEST_SET_EXTRACT(MichaelSet_HP_cmp_stdAlloc) \
TEST_SET_EXTRACT(MichaelSet_HP_less_michaelAlloc) \
- /*TEST_SET_EXTRACT(MichaelSet_HRC_cmp_stdAlloc)*/ \
- /*TEST_SET_EXTRACT(MichaelSet_HRC_less_michaelAlloc)*/ \
TEST_SET_EXTRACT(MichaelSet_PTB_cmp_stdAlloc) \
TEST_SET_EXTRACT(MichaelSet_PTB_less_michaelAlloc) \
TEST_SET_EXTRACT(MichaelSet_RCU_GPI_cmp_stdAlloc) \
TEST_SET_EXTRACT(MichaelSet_RCU_GPT_less_michaelAlloc) \
TEST_SET_EXTRACT(MichaelSet_Lazy_HP_cmp_stdAlloc) \
TEST_SET_EXTRACT(MichaelSet_Lazy_HP_less_michaelAlloc) \
- /*TEST_SET_EXTRACT(MichaelSet_Lazy_HRC_cmp_stdAlloc)*/ \
- /*TEST_SET_EXTRACT(MichaelSet_Lazy_HRC_less_michaelAlloc)*/ \
TEST_SET_EXTRACT(MichaelSet_Lazy_PTB_cmp_stdAlloc) \
TEST_SET_EXTRACT(MichaelSet_Lazy_PTB_less_michaelAlloc) \
TEST_SET_EXTRACT(MichaelSet_Lazy_RCU_GPI_cmp_stdAlloc) \
#define CDSUNIT_TEST_MichaelSet \
CPPUNIT_TEST(MichaelSet_HP_cmp_stdAlloc) \
CPPUNIT_TEST(MichaelSet_HP_less_michaelAlloc) \
- /*CPPUNIT_TEST(MichaelSet_HRC_cmp_stdAlloc)*/ \
- /*CPPUNIT_TEST(MichaelSet_HRC_less_michaelAlloc)*/ \
CPPUNIT_TEST(MichaelSet_PTB_cmp_stdAlloc) \
CPPUNIT_TEST(MichaelSet_PTB_less_michaelAlloc) \
CPPUNIT_TEST(MichaelSet_RCU_GPI_cmp_stdAlloc) \
CPPUNIT_TEST(MichaelSet_RCU_GPT_less_michaelAlloc) \
CPPUNIT_TEST(MichaelSet_Lazy_HP_cmp_stdAlloc) \
CPPUNIT_TEST(MichaelSet_Lazy_HP_less_michaelAlloc) \
- /*CPPUNIT_TEST(MichaelSet_Lazy_HRC_cmp_stdAlloc)*/ \
- /*CPPUNIT_TEST(MichaelSet_Lazy_HRC_less_michaelAlloc)*/ \
CPPUNIT_TEST(MichaelSet_Lazy_PTB_cmp_stdAlloc) \
CPPUNIT_TEST(MichaelSet_Lazy_PTB_less_michaelAlloc) \
CPPUNIT_TEST(MichaelSet_Lazy_RCU_GPI_cmp_stdAlloc) \
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_HRC_dyn_cmp)\
- TEST_SET_EXTRACT(SplitList_Michael_HRC_st_cmp)\
- TEST_SET_EXTRACT(SplitList_Michael_HRC_dyn_less)\
- TEST_SET_EXTRACT(SplitList_Michael_HRC_st_less)\
TEST_SET_EXTRACT(SplitList_Michael_PTB_dyn_cmp)\
TEST_SET_EXTRACT(SplitList_Michael_PTB_st_cmp)\
TEST_SET_EXTRACT(SplitList_Michael_PTB_dyn_less)\
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_HRC_dyn_cmp)\
- TEST_SET_EXTRACT(SplitList_Lazy_HRC_st_cmp)\
- TEST_SET_EXTRACT(SplitList_Lazy_HRC_dyn_less)\
- TEST_SET_EXTRACT(SplitList_Lazy_HRC_st_less)\
TEST_SET_EXTRACT(SplitList_Lazy_PTB_dyn_cmp)\
TEST_SET_EXTRACT(SplitList_Lazy_PTB_st_cmp)\
TEST_SET_EXTRACT(SplitList_Lazy_PTB_dyn_less)\
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_HRC_dyn_cmp)*/\
- /*CPPUNIT_TEST(SplitList_Michael_HRC_st_cmp)*/\
- /*CPPUNIT_TEST(SplitList_Michael_HRC_dyn_less)*/\
- /*CPPUNIT_TEST(SplitList_Michael_HRC_st_less)*/\
CPPUNIT_TEST(SplitList_Michael_PTB_dyn_cmp)\
CPPUNIT_TEST(SplitList_Michael_PTB_st_cmp)\
CPPUNIT_TEST(SplitList_Michael_PTB_dyn_less)\
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_HRC_dyn_cmp)*/\
- /*CPPUNIT_TEST(SplitList_Lazy_HRC_st_cmp)*/\
- /*CPPUNIT_TEST(SplitList_Lazy_HRC_dyn_less)*/\
- /*CPPUNIT_TEST(SplitList_Lazy_HRC_st_less)*/\
CPPUNIT_TEST(SplitList_Lazy_PTB_dyn_cmp)\
CPPUNIT_TEST(SplitList_Lazy_PTB_st_cmp)\
CPPUNIT_TEST(SplitList_Lazy_PTB_dyn_less)\
TEST_SET_NOLF_EXTRACT(SkipListSet_hp_cmp_pascal_stat)\
TEST_SET_NOLF_EXTRACT(SkipListSet_hp_less_xorshift)\
TEST_SET_NOLF_EXTRACT(SkipListSet_hp_cmp_xorshift_stat)\
- TEST_SET_NOLF_EXTRACT(SkipListSet_hrc_less_pascal)\
- TEST_SET_NOLF_EXTRACT(SkipListSet_hrc_cmp_pascal_stat)\
- TEST_SET_NOLF_EXTRACT(SkipListSet_hrc_less_xorshift)\
- TEST_SET_NOLF_EXTRACT(SkipListSet_hrc_cmp_xorshift_stat)\
TEST_SET_NOLF_EXTRACT(SkipListSet_ptb_less_pascal)\
TEST_SET_NOLF_EXTRACT(SkipListSet_ptb_cmp_pascal_stat)\
TEST_SET_NOLF_EXTRACT(SkipListSet_ptb_less_xorshift)\
CPPUNIT_TEST(SkipListSet_hp_cmp_pascal_stat)\
CPPUNIT_TEST(SkipListSet_hp_less_xorshift)\
CPPUNIT_TEST(SkipListSet_hp_cmp_xorshift_stat)\
- /*CPPUNIT_TEST(SkipListSet_hrc_less_pascal)*/\
- /*CPPUNIT_TEST(SkipListSet_hrc_cmp_pascal_stat)*/\
- /*CPPUNIT_TEST(SkipListSet_hrc_less_xorshift)*/\
- /*CPPUNIT_TEST(SkipListSet_hrc_cmp_xorshift_stat)*/\
CPPUNIT_TEST(SkipListSet_ptb_less_pascal)\
CPPUNIT_TEST(SkipListSet_ptb_cmp_pascal_stat)\
CPPUNIT_TEST(SkipListSet_ptb_less_xorshift)\
#include <cds/urcu/signal_threaded.h>
#include <cds/container/michael_list_hp.h>
-#include <cds/container/michael_list_hrc.h>
#include <cds/container/michael_list_dhp.h>
#include <cds/container/michael_list_rcu.h>
#include <cds/container/lazy_list_hp.h>
-#include <cds/container/lazy_list_hrc.h>
#include <cds/container/lazy_list_ptb.h>
#include <cds/container/lazy_list_rcu.h>
#include <cds/container/cuckoo_set.h>
#include <cds/container/skip_list_set_hp.h>
-#include <cds/container/skip_list_set_hrc.h>
#include <cds/container/skip_list_set_ptb.h>
#include <cds/container/skip_list_set_rcu.h>
>::type
> MichaelList_HP_less_michaelAlloc;
- typedef cc::MichaelList< cds::gc::HRC, key_val,
- typename cc::michael_list::make_traits<
- co::compare< compare >
- >::type
- > MichaelList_HRC_cmp_stdAlloc;
-
- typedef cc::MichaelList< cds::gc::HRC, key_val,
- typename cc::michael_list::make_traits<
- co::compare< compare >
- ,co::memory_model< co::v::sequential_consistent >
- >::type
- > MichaelList_HRC_cmp_stdAlloc_seqcst;
-
- typedef cc::MichaelList< cds::gc::HRC, key_val,
- typename cc::michael_list::make_traits<
- co::compare< compare >,
- co::allocator< memory::MichaelAllocator<int> >
- >::type
- > MichaelList_HRC_cmp_michaelAlloc;
-
- typedef cc::MichaelList< cds::gc::HRC, key_val,
- typename cc::michael_list::make_traits<
- co::less< less >
- >::type
- > MichaelList_HRC_less_stdAlloc;
-
- typedef cc::MichaelList< cds::gc::HRC, key_val,
- typename cc::michael_list::make_traits<
- co::less< less >
- ,co::memory_model< co::v::sequential_consistent >
- >::type
- > MichaelList_HRC_less_stdAlloc_seqcst;
-
- typedef cc::MichaelList< cds::gc::HRC, key_val,
- typename cc::michael_list::make_traits<
- co::less< less >,
- co::allocator< memory::MichaelAllocator<int> >
- >::type
- > MichaelList_HRC_less_michaelAlloc;
-
typedef cc::MichaelList< cds::gc::PTB, key_val,
typename cc::michael_list::make_traits<
co::compare< compare >
>::type
> MichaelSet_HP_less_michaelAlloc;
- typedef cc::MichaelHashSet< cds::gc::HRC, MichaelList_HRC_cmp_stdAlloc,
- typename cc::michael_set::make_traits<
- co::hash< hash >
- >::type
- > MichaelSet_HRC_cmp_stdAlloc;
-
- typedef cc::MichaelHashSet< cds::gc::HRC, MichaelList_HRC_cmp_stdAlloc_seqcst,
- typename cc::michael_set::make_traits<
- co::hash< hash >
- >::type
- > MichaelSet_HRC_cmp_stdAlloc_seqcst;
-
- typedef cc::MichaelHashSet< cds::gc::HRC, MichaelList_HRC_cmp_michaelAlloc,
- typename cc::michael_set::make_traits<
- co::hash< hash >,
- co::allocator< memory::MichaelAllocator<int> >
- >::type
- > MichaelSet_HRC_cmp_michaelAlloc;
-
- typedef cc::MichaelHashSet< cds::gc::HRC, MichaelList_HRC_less_stdAlloc,
- typename cc::michael_set::make_traits<
- co::hash< hash >
- >::type
- > MichaelSet_HRC_less_stdAlloc;
-
- typedef cc::MichaelHashSet< cds::gc::HRC, MichaelList_HRC_less_stdAlloc_seqcst,
- typename cc::michael_set::make_traits<
- co::hash< hash >
- >::type
- > MichaelSet_HRC_less_stdAlloc_seqcst;
-
- typedef cc::MichaelHashSet< cds::gc::HRC, MichaelList_HRC_less_michaelAlloc,
- typename cc::michael_set::make_traits<
- co::hash< hash >,
- co::allocator< memory::MichaelAllocator<int> >
- >::type
- > MichaelSet_HRC_less_michaelAlloc;
-
typedef cc::MichaelHashSet< cds::gc::PTB, MichaelList_PTB_cmp_stdAlloc,
typename cc::michael_set::make_traits<
co::hash< hash >
>::type
> LazyList_HP_less_michaelAlloc;
- typedef cc::LazyList< cds::gc::HRC, key_val,
- typename cc::lazy_list::make_traits<
- co::compare< compare >
- >::type
- > LazyList_HRC_cmp_stdAlloc;
-
- typedef cc::LazyList< cds::gc::HRC, key_val,
- typename cc::lazy_list::make_traits<
- co::compare< compare >
- ,co::memory_model< co::v::sequential_consistent >
- >::type
- > LazyList_HRC_cmp_stdAlloc_seqcst;
-
- typedef cc::LazyList< cds::gc::HRC, key_val,
- typename cc::lazy_list::make_traits<
- co::compare< compare >,
- co::allocator< memory::MichaelAllocator<int> >
- >::type
- > LazyList_HRC_cmp_michaelAlloc;
-
- typedef cc::LazyList< cds::gc::HRC, key_val,
- typename cc::lazy_list::make_traits<
- co::less< less >
- >::type
- > LazyList_HRC_less_stdAlloc;
-
- typedef cc::LazyList< cds::gc::HRC, key_val,
- typename cc::lazy_list::make_traits<
- co::less< less >
- ,co::memory_model< co::v::sequential_consistent >
- >::type
- > LazyList_HRC_less_stdAlloc_seqcst;
-
- typedef cc::LazyList< cds::gc::HRC, key_val,
- typename cc::lazy_list::make_traits<
- co::less< less >,
- co::allocator< memory::MichaelAllocator<int> >
- >::type
- > LazyList_HRC_less_michaelAlloc;
-
typedef cc::LazyList< cds::gc::PTB, key_val,
typename cc::lazy_list::make_traits<
co::compare< compare >
>::type
> MichaelSet_Lazy_HP_less_michaelAlloc;
- typedef cc::MichaelHashSet< cds::gc::HRC, LazyList_HRC_cmp_stdAlloc,
- typename cc::michael_set::make_traits<
- co::hash< hash >
- >::type
- > MichaelSet_Lazy_HRC_cmp_stdAlloc;
-
- typedef cc::MichaelHashSet< cds::gc::HRC, LazyList_HRC_cmp_stdAlloc_seqcst,
- typename cc::michael_set::make_traits<
- co::hash< hash >
- >::type
- > MichaelSet_Lazy_HRC_cmp_stdAlloc_seqcst;
-
- typedef cc::MichaelHashSet< cds::gc::HRC, LazyList_HRC_cmp_michaelAlloc,
- typename cc::michael_set::make_traits<
- co::hash< hash >,
- co::allocator< memory::MichaelAllocator<int> >
- >::type
- > MichaelSet_Lazy_HRC_cmp_michaelAlloc;
-
- typedef cc::MichaelHashSet< cds::gc::HRC, LazyList_HRC_less_stdAlloc,
- typename cc::michael_set::make_traits<
- co::hash< hash >
- >::type
- > MichaelSet_Lazy_HRC_less_stdAlloc;
-
- typedef cc::MichaelHashSet< cds::gc::HRC, LazyList_HRC_less_stdAlloc_seqcst,
- typename cc::michael_set::make_traits<
- co::hash< hash >
- >::type
- > MichaelSet_Lazy_HRC_less_stdAlloc_seqcst;
-
- typedef cc::MichaelHashSet< cds::gc::HRC, LazyList_HRC_less_michaelAlloc,
- typename cc::michael_set::make_traits<
- co::hash< hash >,
- co::allocator< memory::MichaelAllocator<int> >
- >::type
- > MichaelSet_Lazy_HRC_less_michaelAlloc;
-
typedef cc::MichaelHashSet< cds::gc::PTB, LazyList_PTB_cmp_stdAlloc,
typename cc::michael_set::make_traits<
co::hash< hash >
>::type
> SplitList_Michael_HP_st_less_seqcst;
- // HRC
- typedef cc::SplitListSet< cds::gc::HRC, key_val,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,co::hash< hash >
- ,cc::split_list::ordered_list_traits<
- typename cc::michael_list::make_traits<
- co::compare< compare >
- >::type
- >
- >::type
- > SplitList_Michael_HRC_dyn_cmp;
-
- typedef cc::SplitListSet< cds::gc::HRC, key_val,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,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_HRC_dyn_cmp_seqcst;
-
- typedef cc::SplitListSet< cds::gc::HRC, key_val,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,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_HRC_st_cmp;
-
- typedef cc::SplitListSet< cds::gc::HRC, key_val,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,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_HRC_st_cmp_seqcst;
-
- // HRC + less
- typedef cc::SplitListSet< cds::gc::HRC, key_val,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,co::hash< hash >
- ,cc::split_list::ordered_list_traits<
- typename cc::michael_list::make_traits<
- co::less< less >
- >::type
- >
- >::type
- > SplitList_Michael_HRC_dyn_less;
-
- typedef cc::SplitListSet< cds::gc::HRC, key_val,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,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_HRC_dyn_less_seqcst;
-
- typedef cc::SplitListSet< cds::gc::HRC, key_val,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,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_HRC_st_less;
-
- typedef cc::SplitListSet< cds::gc::HRC, key_val,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::michael_list_tag>
- ,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_HRC_st_less_seqcst;
-
// PTB
typedef cc::SplitListSet< cds::gc::PTB, key_val,
typename cc::split_list::make_traits<
>::type
> SplitList_Lazy_HP_st_less_seqcst;
- // HRC
- typedef cc::SplitListSet< cds::gc::HRC, key_val,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::lazy_list_tag>
- ,co::hash< hash >
- ,cc::split_list::ordered_list_traits<
- typename cc::lazy_list::make_traits<
- co::compare< compare >
- >::type
- >
- >::type
- > SplitList_Lazy_HRC_dyn_cmp;
-
- typedef cc::SplitListSet< cds::gc::HRC, key_val,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::lazy_list_tag>
- ,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_HRC_dyn_cmp_seqcst;
-
- typedef cc::SplitListSet< cds::gc::HRC, key_val,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::lazy_list_tag>
- ,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_HRC_st_cmp;
-
- typedef cc::SplitListSet< cds::gc::HRC, key_val,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::lazy_list_tag>
- ,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_HRC_st_cmp_seqcst;
-
- // HRC + less
- typedef cc::SplitListSet< cds::gc::HRC, key_val,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::lazy_list_tag>
- ,co::hash< hash >
- ,cc::split_list::ordered_list_traits<
- typename cc::lazy_list::make_traits<
- co::less< less >
- >::type
- >
- >::type
- > SplitList_Lazy_HRC_dyn_less;
-
- typedef cc::SplitListSet< cds::gc::HRC, key_val,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::lazy_list_tag>
- ,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_HRC_dyn_less_seqcst;
-
- typedef cc::SplitListSet< cds::gc::HRC, key_val,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::lazy_list_tag>
- ,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_HRC_st_less;
-
- typedef cc::SplitListSet< cds::gc::HRC, key_val,
- typename cc::split_list::make_traits<
- cc::split_list::ordered_list<cc::lazy_list_tag>
- ,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_HRC_st_less_seqcst;
-
-
// PTB
typedef cc::SplitListSet< cds::gc::PTB, key_val,
typename cc::split_list::make_traits<
{};
typedef cc::SkipListSet< cds::gc::HP, key_val, traits_SkipListSet_hp_cmp_xorshift_stat > SkipListSet_hp_cmp_xorshift_stat;
- // ***************************************************************************
- // SkipListSet - HRC
-
- typedef cc::SkipListSet< cds::gc::HRC, key_val,
- typename cc::skip_list::make_traits <
- co::less< less >
- ,co::item_counter< cds::atomicity::item_counter >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
- >::type
- > SkipListSet_hrc_less_pascal;
-
- typedef cc::SkipListSet< cds::gc::HRC, key_val,
- typename cc::skip_list::make_traits <
- co::less< less >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
- ,co::memory_model< co::v::sequential_consistent >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- > SkipListSet_hrc_less_pascal_seqcst;
-
- typedef cc::SkipListSet< cds::gc::HRC, key_val,
- typename cc::skip_list::make_traits <
- co::less< less >
- ,co::item_counter< cds::atomicity::item_counter >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
- ,co::stat< cc::skip_list::stat<> >
- >::type
- > SkipListSet_hrc_less_pascal_stat;
-
- typedef cc::SkipListSet< cds::gc::HRC, key_val,
- typename cc::skip_list::make_traits <
- co::compare< compare >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- > SkipListSet_hrc_cmp_pascal;
-
- typedef cc::SkipListSet< cds::gc::HRC, key_val,
- typename cc::skip_list::make_traits <
- co::compare< compare >
- ,co::item_counter< cds::atomicity::item_counter >
- ,cc::skip_list::random_level_generator< cc::skip_list::turbo_pascal >
- ,co::stat< cc::skip_list::stat<> >
- >::type
- > SkipListSet_hrc_cmp_pascal_stat;
-
- typedef cc::SkipListSet< cds::gc::HRC, key_val,
- typename cc::skip_list::make_traits <
- co::less< less >
- ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- > SkipListSet_hrc_less_xorshift;
-
- typedef cc::SkipListSet< cds::gc::HRC, key_val,
- typename cc::skip_list::make_traits <
- co::less< less >
- ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
- ,co::stat< cc::skip_list::stat<> >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- > SkipListSet_hrc_less_xorshift_stat;
-
- typedef cc::SkipListSet< cds::gc::HRC, key_val,
- typename cc::skip_list::make_traits <
- co::compare< compare >
- ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- > SkipListSet_hrc_cmp_xorshift;
-
- typedef cc::SkipListSet< cds::gc::HRC, key_val,
- typename cc::skip_list::make_traits <
- co::compare< compare >
- ,cc::skip_list::random_level_generator< cc::skip_list::xorshift >
- ,co::stat< cc::skip_list::stat<> >
- ,co::item_counter< cds::atomicity::item_counter >
- >::type
- > SkipListSet_hrc_cmp_xorshift_stat;
-
// ***************************************************************************
// SkipListSet - PTB