#include <cds/container/fcqueue.h>
#include <cds/container/fcdeque.h>
#include <cds/container/segmented_queue.h>
+#include <cds/container/weak_ringbuffer.h>
#include <cds/gc/hp.h>
#include <cds/gc/dhp.h>
}
};
+ // singlre-consumer version
+ struct traits_VyukovMPSCCycleQueue_dyn: public traits_VyukovMPMCCycleQueue_dyn
+ {
+ static const bool single_consumer = true;
+ };
+ class VyukovMPSCCycleQueue_dyn
+ : public cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPSCCycleQueue_dyn >
+ {
+ typedef cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPSCCycleQueue_dyn > base_class;
+ public:
+ VyukovMPSCCycleQueue_dyn()
+ : base_class( 1024 * 64 )
+ {}
+ VyukovMPSCCycleQueue_dyn( size_t nCapacity )
+ : base_class( nCapacity )
+ {}
+
+ cds::opt::none statistics() const
+ {
+ return cds::opt::none();
+ }
+ };
+
+ struct traits_VyukovMPSCCycleQueue_dyn_ic: public traits_VyukovMPMCCycleQueue_dyn
+ {
+ static const bool single_consumer = true;
+ };
+ class VyukovMPSCCycleQueue_dyn_ic
+ : public cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPSCCycleQueue_dyn_ic >
+ {
+ typedef cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPSCCycleQueue_dyn_ic > base_class;
+ public:
+ VyukovMPSCCycleQueue_dyn_ic()
+ : base_class( 1024 * 64 )
+ {}
+ VyukovMPSCCycleQueue_dyn_ic( size_t nCapacity )
+ : base_class( nCapacity )
+ {}
+
+ cds::opt::none statistics() const
+ {
+ return cds::opt::none();
+ }
+ };
+
+
+ // WeakRingBuffer
+ struct traits_WeakRingBuffer_dyn: public cds::container::weak_ringbuffer::traits
+ {
+ typedef cds::opt::v::uninitialized_dynamic_buffer< int > buffer;
+ };
+ class WeakRingBuffer_dyn
+ : public cds::container::WeakRingBuffer< Value, traits_WeakRingBuffer_dyn >
+ {
+ typedef cds::container::WeakRingBuffer< Value, traits_WeakRingBuffer_dyn > base_class;
+ public:
+ WeakRingBuffer_dyn()
+ : base_class( 1024 * 64 )
+ {}
+ WeakRingBuffer_dyn( size_t nCapacity )
+ : base_class( nCapacity )
+ {}
+
+ cds::opt::none statistics() const
+ {
+ return cds::opt::none();
+ }
+ };
+
+ class WeakRingBuffer_void_dyn
+ : public cds::container::WeakRingBuffer< void, traits_WeakRingBuffer_dyn >
+ {
+ typedef cds::container::WeakRingBuffer< void, traits_WeakRingBuffer_dyn > base_class;
+ public:
+ WeakRingBuffer_void_dyn()
+ : base_class( 1024 * 64 )
+ {}
+ WeakRingBuffer_void_dyn( size_t nCapacity )
+ : base_class( nCapacity )
+ {}
+
+ cds::opt::none statistics() const
+ {
+ return cds::opt::none();
+ }
+ };
// BasketQueue
#if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL > 0
# define CDSSTRESS_MSQueue_1( test_fixture ) \
- CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_seqcst ) \
CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_ic ) \
- CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_seqcst ) \
CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_ic ) \
# define CDSSTRESS_MoirQueue_1( test_fixture ) \
- CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_seqcst ) \
CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_ic ) \
- CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_seqcst ) \
CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_ic ) \
# define CDSSTRESS_OptimsticQueue_1( test_fixture ) \
- CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_seqcst ) \
CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_ic ) \
- CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_seqcst ) \
CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_ic ) \
# define CDSSTRESS_BasketQueue_1( test_fixture ) \
- CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_seqcst ) \
CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_ic ) \
- CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_seqcst ) \
CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_ic ) \
# define CDSSTRESS_FCQueue_1( test_fixture ) \
CDSSTRESS_Queue_F( test_fixture, FCQueue_list_elimination ) \
# define CDSSTRESS_FCDeque_1( test_fixture ) \
- CDSSTRESS_Queue_F( test_fixture, FCDequeL_mutex ) \
- CDSSTRESS_Queue_F( test_fixture, FCDequeL_stat ) \
CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_ss )\
CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_sm ) \
CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_mm ) \
CDSSTRESS_Queue_F( test_fixture, FCDequeL_elimination ) \
CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost ) \
CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost_elimination ) \
- CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost_elimination_stat ) \
CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_ss ) \
CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_sm ) \
CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_mm ) \
CDSSTRESS_Queue_F( test_fixture, FCDequeR_elimination ) \
CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost ) \
CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost_elimination ) \
- CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost_elimination_stat ) \
# define CDSSTRESS_FCDeque_HeavyValue_1( test_fixture ) \
CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_ss ) \
- CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_ss_stat ) \
CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_sm ) \
- CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_sm_stat ) \
CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_mm ) \
- CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_mm_stat ) \
CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_elimination ) \
- CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_elimination_stat ) \
CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_boost ) \
- CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_boost_stat ) \
CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_boost_elimination) \
- CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_boost_elimination_stat ) \
CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_default ) \
- CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_mutex ) \
- CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_stat ) \
CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_ss ) \
- CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_ss_stat ) \
CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_sm ) \
- CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_sm_stat ) \
CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_mm ) \
- CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_mm_stat ) \
CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_elimination ) \
- CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_elimination_stat ) \
CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_boost ) \
- CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_boost_stat ) \
CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_boost_elimination) \
- CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_boost_elimination_stat ) \
# define CDSSTRESS_RWQueue_1( test_fixture ) \
CDSSTRESS_Queue_F( test_fixture, RWQueue_Spin_ic ) \
# define CDSSTRESS_SegmentedQueue_1( test_fixture ) \
- CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_mutex_padding ) \
CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_spin_padding ) \
- CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_mutex_padding ) \
# define CDSSTRESS_StdQueue_1( test_fixture ) \
CDSSTRESS_Queue_F( test_fixture, StdQueue_deque_Mutex ) \
#define CDSSTRESS_MSQueue( test_fixture ) \
CDSSTRESS_Queue_F( test_fixture, MSQueue_HP ) \
- CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_stat ) \
CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP ) \
- CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_stat ) \
CDSSTRESS_MSQueue_1( test_fixture )
#define CDSSTRESS_MoirQueue( test_fixture ) \
CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP ) \
- CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_stat ) \
CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP ) \
- CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_stat ) \
CDSSTRESS_MoirQueue_1( test_fixture )
#define CDSSTRESS_OptimsticQueue( test_fixture ) \
CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP ) \
- CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_stat ) \
CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP ) \
- CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_stat ) \
CDSSTRESS_OptimsticQueue_1( test_fixture )
#define CDSSTRESS_BasketQueue( test_fixture ) \
CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP ) \
- CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_stat ) \
CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP ) \
- CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_stat ) \
CDSSTRESS_BasketQueue_1( test_fixture )
#define CDSSTRESS_FCQueue( test_fixture ) \
CDSSTRESS_Queue_F( test_fixture, FCQueue_deque ) \
- CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_stat ) \
- CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_ss_stat ) \
- CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_sm_stat ) \
- CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_mm_stat ) \
- CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_elimination_stat ) \
CDSSTRESS_Queue_F( test_fixture, FCQueue_list ) \
- CDSSTRESS_Queue_F( test_fixture, FCQueue_list_stat ) \
- CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_ss_stat ) \
- CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_sm_stat ) \
- CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_mm_stat ) \
- CDSSTRESS_Queue_F( test_fixture, FCQueue_list_elimination_stat ) \
CDSSTRESS_FCQueue_1( test_fixture )
#define CDSSTRESS_FCDeque( test_fixture ) \
CDSSTRESS_Queue_F( test_fixture, FCDequeL_default ) \
- CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_ss_stat ) \
- CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_sm_stat ) \
- CDSSTRESS_Queue_F( test_fixture, FCDequeL_wait_mm_stat ) \
- CDSSTRESS_Queue_F( test_fixture, FCDequeL_elimination_stat ) \
- CDSSTRESS_Queue_F( test_fixture, FCDequeL_boost_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_wait_ss_stat ) \
- CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_sm_stat ) \
- CDSSTRESS_Queue_F( test_fixture, FCDequeR_wait_mm_stat ) \
- CDSSTRESS_Queue_F( test_fixture, FCDequeR_elimination_stat ) \
- CDSSTRESS_Queue_F( test_fixture, FCDequeR_boost_stat ) \
CDSSTRESS_FCDeque_1( test_fixture )
#define CDSSTRESS_FCDeque_HeavyValue( test_fixture ) \
CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_default ) \
- CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_mutex ) \
- CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_stat ) \
CDSSTRESS_FCDeque_HeavyValue_1( test_fixture )
#define CDSSTRESS_RWQueue( test_fixture ) \
CDSSTRESS_Queue_F( test_fixture, RWQueue_Spin ) \
- CDSSTRESS_Queue_F( test_fixture, RWQueue_mutex ) \
CDSSTRESS_RWQueue_1( test_fixture )
#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_stat ) \
CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_spin ) \
- 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_stat ) \
CDSSTRESS_SegmentedQueue_1( test_fixture )
#define CDSSTRESS_VyukovQueue( test_fixture ) \
CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn ) \
CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn_ic )
+#define CDSSTRESS_VyukovSingleConsumerQueue( test_fixture ) \
+ CDSSTRESS_Queue_F( test_fixture, VyukovMPSCCycleQueue_dyn ) \
+ CDSSTRESS_Queue_F( test_fixture, VyukovMPSCCycleQueue_dyn_ic )
+
+#define CDSSTRESS_WeakRingBuffer( test_fixture ) \
+ CDSSTRESS_Queue_F( test_fixture, WeakRingBuffer_dyn )
+
+#define CDSSTRESS_WeakRingBuffer_void( test_fixture ) \
+ CDSSTRESS_Queue_F( test_fixture, WeakRingBuffer_void_dyn )
+
#define CDSSTRESS_StdQueue( test_fixture ) \
CDSSTRESS_Queue_F( test_fixture, StdQueue_deque_Spinlock ) \
CDSSTRESS_Queue_F( test_fixture, StdQueue_list_Spinlock ) \