X-Git-Url: http://plrg.eecs.uci.edu/git/?p=libcds.git;a=blobdiff_plain;f=test%2Fstress%2Fqueue%2Fqueue_type.h;h=ad85e09e38488bc518d547b164bb3ca9e3a83d4e;hp=0db165ec50d24152c3f8fe2b6fa0ae195eafbd1f;hb=4a833c7d8fe693636f4453de723151888ac86d7e;hpb=91dbaa8005237a46dc5993083833df1e7f4fc047 diff --git a/test/stress/queue/queue_type.h b/test/stress/queue/queue_type.h index 0db165ec..ad85e09e 100644 --- a/test/stress/queue/queue_type.h +++ b/test/stress/queue/queue_type.h @@ -1,11 +1,11 @@ /* This file is a part of libcds - Concurrent Data Structures library - (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016 + (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2017 Source code repo: http://github.com/khizmax/libcds/ Download: http://sourceforge.net/projects/libcds/files/ - + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -25,7 +25,7 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CDSSTRESS_QUEUE_TYPES_H @@ -35,7 +35,6 @@ #include #include #include -#include #include #include #include @@ -47,11 +46,11 @@ #include "std_queue.h" #include "lock/win32_lock.h" -#include "framework/michael_alloc.h" #include #include +#include #include "print_stat.h" namespace queue { @@ -136,15 +135,6 @@ namespace queue { typedef cds::container::MoirQueue MoirQueue_HP; typedef cds::container::MoirQueue MoirQueue_DHP; - struct traits_MSQueue_michaelAlloc : public cds::container::msqueue::traits - { - typedef memory::MichaelAllocator allocator; - }; - typedef cds::container::MSQueue MSQueue_HP_michaelAlloc; - typedef cds::container::MSQueue MSQueue_DHP_michaelAlloc; - typedef cds::container::MoirQueue MoirQueue_HP_michaelAlloc; - typedef cds::container::MoirQueue MoirQueue_DHP_michaelAlloc; - struct traits_MSQueue_seqcst : public cds::container::msqueue::make_traits < cds::opt::memory_model < cds::opt::v::sequential_consistent > @@ -182,13 +172,6 @@ namespace queue { typedef cds::container::OptimisticQueue< cds::gc::HP, Value > OptimisticQueue_HP; typedef cds::container::OptimisticQueue< cds::gc::DHP, Value > OptimisticQueue_DHP; - struct traits_OptimisticQueue_michaelAlloc : public cds::container::optimistic_queue::traits - { - typedef memory::MichaelAllocator allocator; - }; - typedef cds::container::OptimisticQueue< cds::gc::HP, Value, traits_OptimisticQueue_michaelAlloc > OptimisticQueue_HP_michaelAlloc; - typedef cds::container::OptimisticQueue< cds::gc::DHP, Value, traits_OptimisticQueue_michaelAlloc > OptimisticQueue_DHP_michaelAlloc; - struct traits_OptimisticQueue_seqcst : public cds::container::optimistic_queue::traits { typedef cds::opt::v::sequential_consistent memory_model; @@ -212,92 +195,6 @@ namespace queue { typedef cds::container::OptimisticQueue< cds::gc::DHP, Value, traits_OptimisticQueue_stat > OptimisticQueue_DHP_stat; - // TsigasCycleQueue - - class TsigasCycleQueue_dyn - : public cds::container::TsigasCycleQueue< Value, - typename cds::container::tsigas_queue::make_traits< - cds::opt::buffer< cds::opt::v::initialized_dynamic_buffer< int > > - >::type - > - { - typedef cds::container::TsigasCycleQueue< Value, - typename cds::container::tsigas_queue::make_traits< - cds::opt::buffer< cds::opt::v::initialized_dynamic_buffer< int > > - >::type - > base_class; - public: - TsigasCycleQueue_dyn() - : base_class( 1024 * 64 ) - {} - - TsigasCycleQueue_dyn( size_t nCapacity ) - : base_class( nCapacity ) - {} - - cds::opt::none statistics() const - { - return cds::opt::none(); - } - }; - - class TsigasCycleQueue_dyn_michaelAlloc - : public cds::container::TsigasCycleQueue< Value, - typename cds::container::tsigas_queue::make_traits< - cds::opt::buffer< cds::opt::v::initialized_dynamic_buffer< int > > - ,cds::opt::allocator< memory::MichaelAllocator > - >::type - > - { - typedef cds::container::TsigasCycleQueue< Value, - typename cds::container::tsigas_queue::make_traits< - cds::opt::buffer< cds::opt::v::initialized_dynamic_buffer< int > > - , cds::opt::allocator< memory::MichaelAllocator > - >::type - > base_class; - public: - TsigasCycleQueue_dyn_michaelAlloc() - : base_class( 1024 * 64 ) - {} - - TsigasCycleQueue_dyn_michaelAlloc( size_t nCapacity ) - : base_class( nCapacity ) - {} - - cds::opt::none statistics() const - { - return cds::opt::none(); - } - }; - - class TsigasCycleQueue_dyn_ic - : public cds::container::TsigasCycleQueue< Value, - typename cds::container::tsigas_queue::make_traits< - cds::opt::buffer< cds::opt::v::initialized_dynamic_buffer< int > > - ,cds::opt::item_counter< cds::atomicity::item_counter > - >::type - > - { - typedef cds::container::TsigasCycleQueue< Value, - typename cds::container::tsigas_queue::make_traits< - cds::opt::buffer< cds::opt::v::initialized_dynamic_buffer< int > > - ,cds::opt::item_counter< cds::atomicity::item_counter > - >::type - > base_class; - public: - TsigasCycleQueue_dyn_ic() - : base_class( 1024 * 64 ) - {} - TsigasCycleQueue_dyn_ic( size_t nCapacity ) - : base_class( nCapacity ) - {} - - cds::opt::none statistics() const - { - return cds::opt::none(); - } - }; - // VyukovMPMCCycleQueue struct traits_VyukovMPMCCycleQueue_dyn : public cds::container::vyukov_queue::traits { @@ -321,28 +218,6 @@ namespace queue { } }; - struct traits_VyukovMPMCCycleQueue_dyn_michaelAlloc : public cds::container::vyukov_queue::traits - { - typedef cds::opt::v::uninitialized_dynamic_buffer< int, memory::MichaelAllocator > buffer; - }; - class VyukovMPMCCycleQueue_dyn_michaelAlloc - : public cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPMCCycleQueue_dyn_michaelAlloc > - { - typedef cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPMCCycleQueue_dyn_michaelAlloc > base_class; - public: - VyukovMPMCCycleQueue_dyn_michaelAlloc() - : base_class( 1024 * 64 ) - {} - VyukovMPMCCycleQueue_dyn_michaelAlloc( size_t nCapacity ) - : base_class( nCapacity ) - {} - - cds::opt::none statistics() const - { - return cds::opt::none(); - } - }; - struct traits_VyukovMPMCCycleQueue_dyn_ic : public traits_VyukovMPMCCycleQueue_dyn { typedef cds::atomicity::item_counter item_counter; @@ -371,13 +246,6 @@ namespace queue { typedef cds::container::BasketQueue< cds::gc::HP , Value > BasketQueue_HP; typedef cds::container::BasketQueue< cds::gc::DHP, Value > BasketQueue_DHP; - struct traits_BasketQueue_michaelAlloc : public cds::container::basket_queue::traits - { - typedef memory::MichaelAllocator allocator; - }; - typedef cds::container::BasketQueue< cds::gc::HP, Value, traits_BasketQueue_michaelAlloc > BasketQueue_HP_michaelAlloc; - typedef cds::container::BasketQueue< cds::gc::DHP, Value, traits_BasketQueue_michaelAlloc > BasketQueue_DHP_michaelAlloc; - struct traits_BasketQueue_seqcst : public cds::container::basket_queue::traits { typedef cds::opt::v::sequential_consistent mamory_model; @@ -417,12 +285,44 @@ namespace queue { typedef cds::container::RWQueue< Value, traits_RWQueue_mutex > RWQueue_mutex; // FCQueue - class traits_FCQueue_elimination: + struct traits_FCQueue_stat: + public cds::container::fcqueue::make_traits< + cds::opt::stat< cds::container::fcqueue::stat<> > + >::type + {}; + struct traits_FCQueue_single_mutex_single_condvar: + public cds::container::fcqueue::make_traits< + cds::opt::wait_strategy< cds::algo::flat_combining::wait_strategy::single_mutex_single_condvar<>> + >::type + {}; + struct traits_FCQueue_single_mutex_single_condvar_stat: traits_FCQueue_single_mutex_single_condvar + { + typedef cds::container::fcqueue::stat<> stat; + }; + struct traits_FCQueue_single_mutex_multi_condvar: + public cds::container::fcqueue::make_traits< + cds::opt::wait_strategy< cds::algo::flat_combining::wait_strategy::single_mutex_multi_condvar<>> + >::type + {}; + struct traits_FCQueue_single_mutex_multi_condvar_stat: traits_FCQueue_single_mutex_multi_condvar + { + typedef cds::container::fcqueue::stat<> stat; + }; + struct traits_FCQueue_multi_mutex_multi_condvar: + public cds::container::fcqueue::make_traits< + cds::opt::wait_strategy< cds::algo::flat_combining::wait_strategy::multi_mutex_multi_condvar<>> + >::type + {}; + struct traits_FCQueue_multi_mutex_multi_condvar_stat: traits_FCQueue_multi_mutex_multi_condvar + { + typedef cds::container::fcqueue::stat<> stat; + }; + struct traits_FCQueue_elimination: public cds::container::fcqueue::make_traits< cds::opt::enable_elimination< true > >::type {}; - class traits_FCQueue_elimination_stat: + struct traits_FCQueue_elimination_stat: public cds::container::fcqueue::make_traits< cds::opt::enable_elimination< true > ,cds::opt::stat< cds::container::fcqueue::stat<> > @@ -430,10 +330,26 @@ namespace queue { {}; typedef cds::container::FCQueue< Value > FCQueue_deque; + typedef cds::container::FCQueue< Value, std::queue, traits_FCQueue_stat > FCQueue_deque_stat; + typedef cds::container::FCQueue< Value, std::queue, traits_FCQueue_single_mutex_single_condvar> FCQueue_deque_wait_ss; + typedef cds::container::FCQueue< Value, std::queue, traits_FCQueue_single_mutex_single_condvar_stat> FCQueue_deque_wait_ss_stat; + typedef cds::container::FCQueue< Value, std::queue, traits_FCQueue_single_mutex_multi_condvar> FCQueue_deque_wait_sm; + typedef cds::container::FCQueue< Value, std::queue, traits_FCQueue_single_mutex_multi_condvar_stat> FCQueue_deque_wait_sm_stat; + typedef cds::container::FCQueue< Value, std::queue, traits_FCQueue_multi_mutex_multi_condvar> FCQueue_deque_wait_mm; + typedef cds::container::FCQueue< Value, std::queue, traits_FCQueue_multi_mutex_multi_condvar_stat> FCQueue_deque_wait_mm_stat; + typedef cds::container::FCQueue< Value, std::queue, traits_FCQueue_elimination > FCQueue_deque_elimination; typedef cds::container::FCQueue< Value, std::queue, traits_FCQueue_elimination_stat > FCQueue_deque_elimination_stat; - typedef cds::container::FCQueue< Value, std::queue > > FCQueue_list; + typedef cds::container::FCQueue< Value, std::queue>> FCQueue_list; + typedef cds::container::FCQueue< Value, std::queue>, traits_FCQueue_stat> FCQueue_list_stat; + typedef cds::container::FCQueue< Value, std::queue>, traits_FCQueue_single_mutex_single_condvar> FCQueue_list_wait_ss; + typedef cds::container::FCQueue< Value, std::queue>, traits_FCQueue_single_mutex_single_condvar_stat> FCQueue_list_wait_ss_stat; + typedef cds::container::FCQueue< Value, std::queue>, traits_FCQueue_single_mutex_multi_condvar> FCQueue_list_wait_sm; + typedef cds::container::FCQueue< Value, std::queue>, traits_FCQueue_single_mutex_multi_condvar_stat> FCQueue_list_wait_sm_stat; + typedef cds::container::FCQueue< Value, std::queue>, traits_FCQueue_multi_mutex_multi_condvar> FCQueue_list_wait_mm; + typedef cds::container::FCQueue< Value, std::queue>, traits_FCQueue_multi_mutex_multi_condvar_stat> FCQueue_list_wait_mm_stat; + typedef cds::container::FCQueue< Value, std::queue >, traits_FCQueue_elimination > FCQueue_list_elimination; typedef cds::container::FCQueue< Value, std::queue >, traits_FCQueue_elimination_stat > FCQueue_list_elimination_stat; @@ -461,9 +377,40 @@ namespace queue { >::type {}; + struct traits_FCDeque_wait_ss: cds::container::fcdeque::traits + { + typedef cds::algo::flat_combining::wait_strategy::single_mutex_single_condvar<> wait_strategy; + }; + struct traits_FCDeque_wait_ss_stat: traits_FCDeque_wait_ss + { + typedef cds::container::fcdeque::stat<> stat; + }; + struct traits_FCDeque_wait_sm: cds::container::fcdeque::traits + { + typedef cds::algo::flat_combining::wait_strategy::single_mutex_multi_condvar<> wait_strategy; + }; + struct traits_FCDeque_wait_sm_stat: traits_FCDeque_wait_sm + { + typedef cds::container::fcdeque::stat<> stat; + }; + struct traits_FCDeque_wait_mm: cds::container::fcdeque::traits + { + typedef cds::algo::flat_combining::wait_strategy::multi_mutex_multi_condvar<> wait_strategy; + }; + struct traits_FCDeque_wait_mm_stat: traits_FCDeque_wait_mm + { + typedef cds::container::fcdeque::stat<> stat; + }; + typedef details::FCDequeL< Value > FCDequeL_default; typedef details::FCDequeL< Value, traits_FCDeque_mutex > FCDequeL_mutex; typedef details::FCDequeL< Value, traits_FCDeque_stat > FCDequeL_stat; + typedef details::FCDequeL< Value, traits_FCDeque_wait_ss > FCDequeL_wait_ss; + typedef details::FCDequeL< Value, traits_FCDeque_wait_ss_stat > FCDequeL_wait_ss_stat; + typedef details::FCDequeL< Value, traits_FCDeque_wait_sm > FCDequeL_wait_sm; + typedef details::FCDequeL< Value, traits_FCDeque_wait_sm_stat > FCDequeL_wait_sm_stat; + typedef details::FCDequeL< Value, traits_FCDeque_wait_mm > FCDequeL_wait_mm; + typedef details::FCDequeL< Value, traits_FCDeque_wait_mm_stat > FCDequeL_wait_mm_stat; typedef details::FCDequeL< Value, traits_FCDeque_elimination > FCDequeL_elimination; typedef details::FCDequeL< Value, traits_FCDeque_elimination_stat > FCDequeL_elimination_stat; @@ -475,6 +422,12 @@ namespace queue { typedef details::FCDequeR< Value > FCDequeR_default; typedef details::FCDequeR< Value, traits_FCDeque_mutex > FCDequeR_mutex; typedef details::FCDequeR< Value, traits_FCDeque_stat > FCDequeR_stat; + typedef details::FCDequeR< Value, traits_FCDeque_wait_ss > FCDequeR_wait_ss; + typedef details::FCDequeR< Value, traits_FCDeque_wait_ss_stat > FCDequeR_wait_ss_stat; + typedef details::FCDequeR< Value, traits_FCDeque_wait_sm > FCDequeR_wait_sm; + typedef details::FCDequeR< Value, traits_FCDeque_wait_sm_stat > FCDequeR_wait_sm_stat; + typedef details::FCDequeR< Value, traits_FCDeque_wait_mm > FCDequeR_wait_mm; + typedef details::FCDequeR< Value, traits_FCDeque_wait_mm_stat > FCDequeR_wait_mm_stat; typedef details::FCDequeR< Value, traits_FCDeque_elimination > FCDequeR_elimination; typedef details::FCDequeR< Value, traits_FCDeque_elimination_stat > FCDequeR_elimination_stat; @@ -483,6 +436,7 @@ namespace queue { typedef details::FCDequeR< Value, traits_FCDeque_elimination, boost::container::deque > FCDequeR_boost_elimination; typedef details::FCDequeR< Value, traits_FCDeque_elimination_stat, boost::container::deque > FCDequeR_boost_elimination_stat; + // STL typedef StdQueue_deque StdQueue_deque_Spinlock; typedef StdQueue_list StdQueue_list_Spinlock; typedef StdQueue_deque StdQueue_deque_Mutex; @@ -553,16 +507,7 @@ namespace cds_test { << CDSSTRESS_STAT_OUT( s, m_nDequeue ) << CDSSTRESS_STAT_OUT( s, m_nFailedDeq ) << CDSSTRESS_STAT_OUT( s, m_nCollided ) - << CDSSTRESS_STAT_OUT_( "combining_factor", s.combining_factor() ) - << CDSSTRESS_STAT_OUT( s, m_nOperationCount ) - << CDSSTRESS_STAT_OUT( s, m_nCombiningCount ) - << CDSSTRESS_STAT_OUT( s, m_nCompactPublicationList ) - << CDSSTRESS_STAT_OUT( s, m_nDeactivatePubRecord ) - << CDSSTRESS_STAT_OUT( s, m_nActivatePubRecord ) - << CDSSTRESS_STAT_OUT( s, m_nPubRecordCreated ) - << CDSSTRESS_STAT_OUT( s, m_nPubRecordDeteted ) - << CDSSTRESS_STAT_OUT( s, m_nAcquirePubRecCount ) - << CDSSTRESS_STAT_OUT( s, m_nReleasePubRecCount ); + << static_cast const&>(s); } static inline property_stream& operator <<( property_stream& o, cds::container::fcqueue::empty_stat const& /*s*/ ) @@ -587,138 +532,142 @@ namespace cds_test { << CDSSTRESS_STAT_OUT( s, m_nPopBack ) << CDSSTRESS_STAT_OUT( s, m_nFailedPopBack ) << CDSSTRESS_STAT_OUT( s, m_nCollided ) - << CDSSTRESS_STAT_OUT_( "combining_factor", s.combining_factor() ) - << CDSSTRESS_STAT_OUT( s, m_nOperationCount ) - << CDSSTRESS_STAT_OUT( s, m_nCombiningCount ) - << CDSSTRESS_STAT_OUT( s, m_nCompactPublicationList ) - << CDSSTRESS_STAT_OUT( s, m_nDeactivatePubRecord ) - << CDSSTRESS_STAT_OUT( s, m_nActivatePubRecord ) - << CDSSTRESS_STAT_OUT( s, m_nPubRecordCreated ) - << CDSSTRESS_STAT_OUT( s, m_nPubRecordDeteted ) - << CDSSTRESS_STAT_OUT( s, m_nAcquirePubRecCount ) - << CDSSTRESS_STAT_OUT( s, m_nReleasePubRecCount ); + << static_cast const&>(s); } } // namespace cds_test -#define CDSSTRESS_Queue_F( test_fixture, type_name ) \ +#define CDSSTRESS_Queue_F( test_fixture, type_name, level ) \ TEST_F( test_fixture, type_name ) \ { \ + if ( !check_detail_level( level )) return; \ typedef queue::Types< value_type >::type_name queue_type; \ queue_type queue; \ test( queue ); \ } #define CDSSTRESS_MSQueue( test_fixture ) \ - CDSSTRESS_Queue_F( test_fixture, MSQueue_HP ) \ - CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_michaelAlloc ) \ - CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_seqcst ) \ - CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_ic ) \ - CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_stat ) \ - CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP ) \ - CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_michaelAlloc ) \ - CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_seqcst ) \ - CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_ic ) \ - CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_stat ) + CDSSTRESS_Queue_F( test_fixture, MSQueue_HP, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_seqcst, 2 ) \ + CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_ic, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_seqcst, 2 ) \ + CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_ic, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_stat, 0 ) #define CDSSTRESS_MoirQueue( test_fixture ) \ - CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP ) \ - CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_michaelAlloc ) \ - CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_seqcst ) \ - CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_ic ) \ - CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_stat ) \ - CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP ) \ - CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_michaelAlloc ) \ - CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_seqcst ) \ - CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_ic ) \ - CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_stat ) + CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_seqcst, 2 ) \ + CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_ic, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_seqcst, 2 ) \ + CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_ic, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_stat, 0 ) #define CDSSTRESS_OptimsticQueue( test_fixture ) \ - CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP ) \ - CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_michaelAlloc ) \ - CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_seqcst ) \ - CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_ic ) \ - CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_stat ) \ - CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP ) \ - CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_michaelAlloc ) \ - CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_seqcst ) \ - CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_ic ) \ - CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_stat ) + CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_seqcst, 2 ) \ + CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_ic, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_seqcst, 2 ) \ + CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_ic, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_stat, 0 ) #define CDSSTRESS_BasketQueue( test_fixture ) \ - CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP ) \ - CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_michaelAlloc ) \ - CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_seqcst ) \ - CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_ic ) \ - CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_stat ) \ - CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP ) \ - CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_michaelAlloc ) \ - CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_seqcst ) \ - CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_ic ) \ - CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_stat ) + CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_seqcst, 2 ) \ + CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_ic, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_seqcst, 2 ) \ + CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_ic, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_stat, 0 ) #define CDSSTRESS_FCQueue( test_fixture ) \ - CDSSTRESS_Queue_F( test_fixture, FCQueue_deque ) \ - CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_elimination ) \ - CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_elimination_stat ) \ - CDSSTRESS_Queue_F( test_fixture, FCQueue_list ) \ - CDSSTRESS_Queue_F( test_fixture, FCQueue_list_elimination ) \ - CDSSTRESS_Queue_F( test_fixture, FCQueue_list_elimination_stat ) + CDSSTRESS_Queue_F( test_fixture, FCQueue_deque, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_ss, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_ss_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_sm, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_sm_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_mm, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_mm_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_elimination, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_elimination_stat,0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_list, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_list_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_ss, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_ss_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_sm, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_sm_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_mm, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_mm_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_list_elimination, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCQueue_list_elimination_stat, 0 ) #define CDSSTRESS_FCDeque( test_fixture ) \ - CDSSTRESS_Queue_F( test_fixture, FCDequeL_default ) \ - CDSSTRESS_Queue_F( test_fixture, FCDequeL_mutex ) \ - CDSSTRESS_Queue_F( test_fixture, FCDequeL_stat ) \ - CDSSTRESS_Queue_F( test_fixture, FCDequeL_elimination ) \ - CDSSTRESS_Queue_F( test_fixture, FCDequeL_elimination_stat ) \ - CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost ) \ - CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost_stat ) \ - CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost_elimination ) \ - CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost_elimination_stat ) \ - CDSSTRESS_Queue_F( test_fixture, FCDequeR_default ) \ - CDSSTRESS_Queue_F( test_fixture, FCDequeR_mutex ) \ - CDSSTRESS_Queue_F( test_fixture, FCDequeR_stat ) \ - CDSSTRESS_Queue_F( test_fixture, FCDequeR_elimination ) \ - CDSSTRESS_Queue_F( test_fixture, FCDequeR_elimination_stat ) \ - CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost ) \ - CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost_stat ) \ - CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost_elimination ) \ - CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost_elimination_stat ) + CDSSTRESS_Queue_F( test_fixture, FCDequeL_default, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeL_mutex, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeL_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_ss, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_ss_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_sm, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_sm_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_mm, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_mm_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeL_elimination, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeL_elimination_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost_elimination, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost_elimination_stat, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeR_default, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeR_mutex, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeR_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_ss, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_ss_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_sm, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_sm_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_mm, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_mm_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeR_elimination, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeR_elimination_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost_elimination, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost_elimination_stat, 1 ) #define CDSSTRESS_RWQueue( test_fixture ) \ - CDSSTRESS_Queue_F( test_fixture, RWQueue_Spin ) \ - CDSSTRESS_Queue_F( test_fixture, RWQueue_Spin_ic ) \ - CDSSTRESS_Queue_F( test_fixture, RWQueue_mutex ) + CDSSTRESS_Queue_F( test_fixture, RWQueue_Spin, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, RWQueue_Spin_ic, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, RWQueue_mutex, 0 ) #define CDSSTRESS_SegmentedQueue( test_fixture ) \ - CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_spin ) \ - CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_spin_padding ) \ - CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_spin_stat ) \ - CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_mutex ) \ - CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_mutex_padding ) \ - CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_mutex_stat ) \ - CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_spin ) \ - CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_spin_padding ) \ - CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_spin_stat ) \ - CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_mutex ) \ - CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_mutex_padding ) \ - CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_mutex_stat ) - - -#define CDSSTRESS_TsigasQueue( test_fixture ) \ - CDSSTRESS_Queue_F( test_fixture, TsigasCycleQueue_dyn ) \ - CDSSTRESS_Queue_F( test_fixture, TsigasCycleQueue_dyn_michaelAlloc ) \ - CDSSTRESS_Queue_F( test_fixture, TsigasCycleQueue_dyn_ic ) + CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_spin, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_spin_padding, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_spin_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_mutex, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_mutex_padding, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_mutex_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_spin, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_spin_padding, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_spin_stat, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_mutex, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_mutex_padding, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_mutex_stat, 0 ) + #define CDSSTRESS_VyukovQueue( test_fixture ) \ - CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn ) \ - CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn_michaelAlloc ) \ - CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn_ic ) + CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn_ic, 1 ) #define CDSSTRESS_StdQueue( test_fixture ) \ - CDSSTRESS_Queue_F( test_fixture, StdQueue_deque_Spinlock ) \ - CDSSTRESS_Queue_F( test_fixture, StdQueue_list_Spinlock ) \ - CDSSTRESS_Queue_F( test_fixture, StdQueue_deque_Mutex ) \ - CDSSTRESS_Queue_F( test_fixture, StdQueue_list_Mutex ) + CDSSTRESS_Queue_F( test_fixture, StdQueue_deque_Spinlock, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, StdQueue_list_Spinlock, 0 ) \ + CDSSTRESS_Queue_F( test_fixture, StdQueue_deque_Mutex, 1 ) \ + CDSSTRESS_Queue_F( test_fixture, StdQueue_list_Mutex, 1 ) #endif // #ifndef CDSSTRESS_QUEUE_TYPES_H