/*
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:
#include <cds/container/moir_queue.h>
#include <cds/container/rwqueue.h>
#include <cds/container/optimistic_queue.h>
-#include <cds/container/tsigas_cycle_queue.h>
#include <cds/container/vyukov_mpmc_cycle_queue.h>
#include <cds/container/basket_queue.h>
#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>
#include "std_queue.h"
#include "lock/win32_lock.h"
-#include "framework/michael_alloc.h"
#include <boost/container/deque.hpp>
#include <cds_test/stress_test.h>
#include <cds_test/stat_flat_combining_out.h>
+#include <cds_test/fc_hevy_value.h>
+
#include "print_stat.h"
namespace queue {
} // namespace details
+namespace fc_details{
+// FCDeque
+ struct traits_FCDeque_stat:
+ public cds::container::fcdeque::make_traits<
+ cds::opt::stat< cds::container::fcdeque::stat<> >
+ >::type
+ {};
+ struct traits_FCDeque_elimination:
+ public cds::container::fcdeque::make_traits<
+ cds::opt::enable_elimination< true >
+ >::type
+ {};
+ struct traits_FCDeque_elimination_stat:
+ public cds::container::fcdeque::make_traits<
+ cds::opt::stat< cds::container::fcdeque::stat<> >,
+ cds::opt::enable_elimination< true >
+ >::type
+ {};
+ struct traits_FCDeque_mutex:
+ public cds::container::fcdeque::make_traits<
+ cds::opt::lock_type< std::mutex >
+ >::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;
+ };
+
+}
template <typename Value>
struct Types {
typedef cds::container::MoirQueue<cds::gc::HP, Value > MoirQueue_HP;
typedef cds::container::MoirQueue<cds::gc::DHP, Value > MoirQueue_DHP;
- struct traits_MSQueue_michaelAlloc : public cds::container::msqueue::traits
- {
- typedef memory::MichaelAllocator<int> allocator;
- };
- typedef cds::container::MSQueue<cds::gc::HP, Value, traits_MSQueue_michaelAlloc > MSQueue_HP_michaelAlloc;
- typedef cds::container::MSQueue<cds::gc::DHP, Value, traits_MSQueue_michaelAlloc > MSQueue_DHP_michaelAlloc;
- typedef cds::container::MoirQueue<cds::gc::HP, Value, traits_MSQueue_michaelAlloc > MoirQueue_HP_michaelAlloc;
- typedef cds::container::MoirQueue<cds::gc::DHP, Value, traits_MSQueue_michaelAlloc > MoirQueue_DHP_michaelAlloc;
-
struct traits_MSQueue_seqcst : public
cds::container::msqueue::make_traits <
cds::opt::memory_model < cds::opt::v::sequential_consistent >
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<int> 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;
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
- >
+ // VyukovMPMCCycleQueue
+ struct traits_VyukovMPMCCycleQueue_dyn : public cds::container::vyukov_queue::traits
{
- 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;
+ typedef cds::opt::v::uninitialized_dynamic_buffer< int > buffer;
+ };
+ class VyukovMPMCCycleQueue_dyn
+ : public cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPMCCycleQueue_dyn >
+ {
+ typedef cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPMCCycleQueue_dyn > base_class;
public:
- TsigasCycleQueue_dyn()
+ VyukovMPMCCycleQueue_dyn()
: base_class( 1024 * 64 )
{}
-
- TsigasCycleQueue_dyn( size_t nCapacity )
+ VyukovMPMCCycleQueue_dyn( size_t nCapacity )
: base_class( nCapacity )
{}
}
};
- 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<int> >
- >::type
- >
+ struct traits_VyukovMPMCCycleQueue_dyn_ic : public traits_VyukovMPMCCycleQueue_dyn
+ {
+ typedef cds::atomicity::item_counter item_counter;
+ };
+ class VyukovMPMCCycleQueue_dyn_ic
+ : public cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPMCCycleQueue_dyn_ic >
{
- 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<int> >
- >::type
- > base_class;
+ typedef cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPMCCycleQueue_dyn_ic > base_class;
public:
- TsigasCycleQueue_dyn_michaelAlloc()
+ VyukovMPMCCycleQueue_dyn_ic()
: base_class( 1024 * 64 )
{}
-
- TsigasCycleQueue_dyn_michaelAlloc( size_t nCapacity )
+ VyukovMPMCCycleQueue_dyn_ic( size_t nCapacity )
: base_class( nCapacity )
{}
}
};
- 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
- >
+ // singlre-consumer version
+ struct traits_VyukovMPSCCycleQueue_dyn: public traits_VyukovMPMCCycleQueue_dyn
{
- 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;
+ 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:
- TsigasCycleQueue_dyn_ic()
+ VyukovMPSCCycleQueue_dyn()
: base_class( 1024 * 64 )
{}
- TsigasCycleQueue_dyn_ic( size_t nCapacity )
+ VyukovMPSCCycleQueue_dyn( size_t nCapacity )
: base_class( nCapacity )
{}
}
};
- // VyukovMPMCCycleQueue
- struct traits_VyukovMPMCCycleQueue_dyn : public cds::container::vyukov_queue::traits
+ struct traits_VyukovMPSCCycleQueue_dyn_ic: public traits_VyukovMPMCCycleQueue_dyn
{
- typedef cds::opt::v::uninitialized_dynamic_buffer< int > buffer;
+ static const bool single_consumer = true;
};
- class VyukovMPMCCycleQueue_dyn
- : public cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPMCCycleQueue_dyn >
+ class VyukovMPSCCycleQueue_dyn_ic
+ : public cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPSCCycleQueue_dyn_ic >
{
- typedef cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPMCCycleQueue_dyn > base_class;
+ typedef cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPSCCycleQueue_dyn_ic > base_class;
public:
- VyukovMPMCCycleQueue_dyn()
+ VyukovMPSCCycleQueue_dyn_ic()
: base_class( 1024 * 64 )
{}
- VyukovMPMCCycleQueue_dyn( size_t nCapacity )
+ VyukovMPSCCycleQueue_dyn_ic( size_t nCapacity )
: base_class( nCapacity )
{}
}
};
- struct traits_VyukovMPMCCycleQueue_dyn_michaelAlloc : public cds::container::vyukov_queue::traits
+
+ // WeakRingBuffer
+ struct traits_WeakRingBuffer_dyn: public cds::container::weak_ringbuffer::traits
{
- typedef cds::opt::v::uninitialized_dynamic_buffer< int, memory::MichaelAllocator<int> > buffer;
+ typedef cds::opt::v::uninitialized_dynamic_buffer< int > buffer;
};
- class VyukovMPMCCycleQueue_dyn_michaelAlloc
- : public cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPMCCycleQueue_dyn_michaelAlloc >
+ class WeakRingBuffer_dyn
+ : public cds::container::WeakRingBuffer< Value, traits_WeakRingBuffer_dyn >
{
- typedef cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPMCCycleQueue_dyn_michaelAlloc > base_class;
+ typedef cds::container::WeakRingBuffer< Value, traits_WeakRingBuffer_dyn > base_class;
public:
- VyukovMPMCCycleQueue_dyn_michaelAlloc()
+ WeakRingBuffer_dyn()
: base_class( 1024 * 64 )
{}
- VyukovMPMCCycleQueue_dyn_michaelAlloc( size_t nCapacity )
+ WeakRingBuffer_dyn( size_t nCapacity )
: base_class( nCapacity )
{}
}
};
- struct traits_VyukovMPMCCycleQueue_dyn_ic : public traits_VyukovMPMCCycleQueue_dyn
+ class WeakRingBuffer_void_dyn
+ : public cds::container::WeakRingBuffer< void, traits_WeakRingBuffer_dyn >
{
- typedef cds::atomicity::item_counter item_counter;
- };
- class VyukovMPMCCycleQueue_dyn_ic
- : public cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPMCCycleQueue_dyn_ic >
- {
- typedef cds::container::VyukovMPMCCycleQueue< Value, traits_VyukovMPMCCycleQueue_dyn_ic > base_class;
+ typedef cds::container::WeakRingBuffer< void, traits_WeakRingBuffer_dyn > base_class;
public:
- VyukovMPMCCycleQueue_dyn_ic()
+ WeakRingBuffer_void_dyn()
: base_class( 1024 * 64 )
{}
- VyukovMPMCCycleQueue_dyn_ic( size_t nCapacity )
+ WeakRingBuffer_void_dyn( size_t nCapacity )
: base_class( nCapacity )
{}
}
};
-
// BasketQueue
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<int> 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;
typedef cds::container::FCQueue< Value, std::queue<Value, std::list<Value> >, traits_FCQueue_elimination_stat > FCQueue_list_elimination_stat;
- // FCDeque
- struct traits_FCDeque_stat:
- public cds::container::fcdeque::make_traits<
- cds::opt::stat< cds::container::fcdeque::stat<> >
- >::type
- {};
- struct traits_FCDeque_elimination:
- public cds::container::fcdeque::make_traits<
- cds::opt::enable_elimination< true >
- >::type
- {};
- struct traits_FCDeque_elimination_stat:
- public cds::container::fcdeque::make_traits<
- cds::opt::stat< cds::container::fcdeque::stat<> >,
- cds::opt::enable_elimination< true >
- >::type
- {};
- struct traits_FCDeque_mutex:
- public cds::container::fcdeque::make_traits<
- cds::opt::lock_type< std::mutex >
- >::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;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_mutex > FCDequeL_mutex;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_stat > FCDequeL_stat;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_ss > FCDequeL_wait_ss;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_ss_stat > FCDequeL_wait_ss_stat;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_sm > FCDequeL_wait_sm;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_sm_stat > FCDequeL_wait_sm_stat;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_mm > FCDequeL_wait_mm;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_mm_stat > FCDequeL_wait_mm_stat;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_elimination > FCDequeL_elimination;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_elimination_stat > FCDequeL_elimination_stat;
typedef details::FCDequeL< Value, cds::container::fcdeque::traits, boost::container::deque<Value> > FCDequeL_boost;
- typedef details::FCDequeL< Value, traits_FCDeque_stat, boost::container::deque<Value> > FCDequeL_boost_stat;
- typedef details::FCDequeL< Value, traits_FCDeque_elimination, boost::container::deque<Value> > FCDequeL_boost_elimination;
- typedef details::FCDequeL< Value, traits_FCDeque_elimination_stat, boost::container::deque<Value> > FCDequeL_boost_elimination_stat;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_stat, boost::container::deque<Value> > FCDequeL_boost_stat;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_elimination, boost::container::deque<Value> > FCDequeL_boost_elimination;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_elimination_stat, boost::container::deque<Value> > FCDequeL_boost_elimination_stat;
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;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_mutex > FCDequeR_mutex;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_stat > FCDequeR_stat;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_ss > FCDequeR_wait_ss;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_ss_stat > FCDequeR_wait_ss_stat;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_sm > FCDequeR_wait_sm;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_sm_stat > FCDequeR_wait_sm_stat;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_mm > FCDequeR_wait_mm;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_mm_stat > FCDequeR_wait_mm_stat;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_elimination > FCDequeR_elimination;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_elimination_stat > FCDequeR_elimination_stat;
typedef details::FCDequeR< Value, cds::container::fcdeque::traits, boost::container::deque<Value> > FCDequeR_boost;
- typedef details::FCDequeR< Value, traits_FCDeque_stat, boost::container::deque<Value> > FCDequeR_boost_stat;
- typedef details::FCDequeR< Value, traits_FCDeque_elimination, boost::container::deque<Value> > FCDequeR_boost_elimination;
- typedef details::FCDequeR< Value, traits_FCDeque_elimination_stat, boost::container::deque<Value> > FCDequeR_boost_elimination_stat;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_stat, boost::container::deque<Value> > FCDequeR_boost_stat;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_elimination, boost::container::deque<Value> > FCDequeR_boost_elimination;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_elimination_stat, boost::container::deque<Value> > FCDequeR_boost_elimination_stat;
// STL
typedef StdQueue_deque<Value> StdQueue_deque_Spinlock;
typedef cds::container::SegmentedQueue< cds::gc::DHP, Value, traits_SegmentedQueue_mutex_padding > SegmentedQueue_DHP_mutex_padding;
typedef cds::container::SegmentedQueue< cds::gc::DHP, Value, traits_SegmentedQueue_mutex_stat > SegmentedQueue_DHP_mutex_stat;
};
+
+ template <typename Value>
+ struct TypesFCHeavyValue {
+ typedef details::FCDequeL< Value > FCDequeL_HeavyValue_default;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_mutex > FCDequeL_HeavyValue_mutex;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_stat > FCDequeL_HeavyValue_stat;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_ss > FCDequeL_HeavyValue_wait_ss;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_ss_stat > FCDequeL_HeavyValue_wait_ss_stat;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_sm > FCDequeL_HeavyValue_wait_sm;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_sm_stat > FCDequeL_HeavyValue_wait_sm_stat;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_mm > FCDequeL_HeavyValue_wait_mm;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_wait_mm_stat > FCDequeL_HeavyValue_wait_mm_stat;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_elimination > FCDequeL_HeavyValue_elimination;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_elimination_stat > FCDequeL_HeavyValue_elimination_stat;
+
+ typedef details::FCDequeL< Value, cds::container::fcdeque::traits, boost::container::deque<Value> > FCDequeL_HeavyValue_boost;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_stat, boost::container::deque<Value> > FCDequeL_HeavyValue_boost_stat;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_elimination, boost::container::deque<Value> > FCDequeL_HeavyValue_boost_elimination;
+ typedef details::FCDequeL< Value, fc_details::traits_FCDeque_elimination_stat, boost::container::deque<Value> > FCDequeL_HeavyValue_boost_elimination_stat;
+
+ typedef details::FCDequeR< Value > FCDequeR_HeavyValue_default;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_mutex > FCDequeR_HeavyValue_mutex;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_stat > FCDequeR_HeavyValue_stat;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_ss > FCDequeR_HeavyValue_wait_ss;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_ss_stat > FCDequeR_HeavyValue_wait_ss_stat;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_sm > FCDequeR_HeavyValue_wait_sm;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_sm_stat > FCDequeR_HeavyValue_wait_sm_stat;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_mm > FCDequeR_HeavyValue_wait_mm;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_wait_mm_stat > FCDequeR_HeavyValue_wait_mm_stat;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_elimination > FCDequeR_HeavyValue_elimination;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_elimination_stat > FCDequeR_HeavyValue_elimination_stat;
+
+ typedef details::FCDequeR< Value, cds::container::fcdeque::traits, boost::container::deque<Value> > FCDequeR_HeavyValue_boost;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_stat, boost::container::deque<Value> > FCDequeR_HeavyValue_boost_stat;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_elimination, boost::container::deque<Value> > FCDequeR_HeavyValue_boost_elimination;
+ typedef details::FCDequeR< Value, fc_details::traits_FCDeque_elimination_stat, boost::container::deque<Value> > FCDequeR_HeavyValue_boost_elimination_stat;
+ };
}
} // namespace cds_test
-#define CDSSTRESS_Queue_F( test_fixture, type_name, level ) \
+#define CDSSTRESS_Queue_F( test_fixture, type_name ) \
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_FCQueue_F( test_fixture, type_name ) \
+ TEST_F( test_fixture, type_name ) \
+ { \
+ typedef queue::TypesFCHeavyValue< value_type >::type_name queue_type; \
+ queue_type queue; \
+ test( queue ); \
+ }
+
+#if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL > 0
+# define CDSSTRESS_MSQueue_1( test_fixture ) \
+ CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_ic ) \
+ CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP_ic ) \
+
+# define CDSSTRESS_MoirQueue_1( test_fixture ) \
+ CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_ic ) \
+ CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP_ic ) \
+
+# define CDSSTRESS_OptimsticQueue_1( test_fixture ) \
+ CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_ic ) \
+ CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP_ic ) \
+
+# define CDSSTRESS_BasketQueue_1( test_fixture ) \
+ CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_ic ) \
+ CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP_ic ) \
+
+# define CDSSTRESS_FCQueue_1( test_fixture ) \
+ CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_ss ) \
+ CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_sm ) \
+ CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_wait_mm ) \
+ CDSSTRESS_Queue_F( test_fixture, FCQueue_deque_elimination ) \
+ CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_ss ) \
+ CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_sm ) \
+ CDSSTRESS_Queue_F( test_fixture, FCQueue_list_wait_mm ) \
+ CDSSTRESS_Queue_F( test_fixture, FCQueue_list_elimination ) \
+
+# define CDSSTRESS_FCDeque_1( test_fixture ) \
+ 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, 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 ) \
+
+# define CDSSTRESS_FCDeque_HeavyValue_1( test_fixture ) \
+ CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_ss ) \
+ CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_sm ) \
+ CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_wait_mm ) \
+ CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_elimination ) \
+ CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_boost ) \
+ CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_boost_elimination) \
+ CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_default ) \
+ CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_ss ) \
+ CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_sm ) \
+ CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_wait_mm ) \
+ CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_elimination ) \
+ CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_boost ) \
+ CDSSTRESS_FCQueue_F( test_fixture, FCDequeR_HeavyValue_boost_elimination) \
+
+# 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_DHP_spin_padding ) \
+
+# define CDSSTRESS_StdQueue_1( test_fixture ) \
+ CDSSTRESS_Queue_F( test_fixture, StdQueue_deque_Mutex ) \
+ CDSSTRESS_Queue_F( test_fixture, StdQueue_list_Mutex ) \
+
+#else
+# define CDSSTRESS_MSQueue_1( test_fixture )
+# define CDSSTRESS_MoirQueue_1( test_fixture )
+# define CDSSTRESS_OptimsticQueue_1( test_fixture )
+# define CDSSTRESS_BasketQueue_1( test_fixture )
+# define CDSSTRESS_FCQueue_1( test_fixture )
+# define CDSSTRESS_FCDeque_1( test_fixture )
+# define CDSSTRESS_FCDeque_HeavyValue_1( test_fixture )
+# define CDSSTRESS_RWQueue_1( test_fixture )
+# define CDSSTRESS_SegmentedQueue_1( test_fixture )
+# define CDSSTRESS_StdQueue_1( test_fixture )
+#endif
+
#define CDSSTRESS_MSQueue( test_fixture ) \
- CDSSTRESS_Queue_F( test_fixture, MSQueue_HP, 0 ) \
- CDSSTRESS_Queue_F( test_fixture, MSQueue_HP_michaelAlloc, 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_michaelAlloc, 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 )
+ CDSSTRESS_Queue_F( test_fixture, MSQueue_HP ) \
+ CDSSTRESS_Queue_F( test_fixture, MSQueue_DHP ) \
+ CDSSTRESS_MSQueue_1( test_fixture )
#define CDSSTRESS_MoirQueue( test_fixture ) \
- CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP, 0 ) \
- CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP_michaelAlloc, 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_michaelAlloc,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 )
+ CDSSTRESS_Queue_F( test_fixture, MoirQueue_HP ) \
+ CDSSTRESS_Queue_F( test_fixture, MoirQueue_DHP ) \
+ CDSSTRESS_MoirQueue_1( test_fixture )
#define CDSSTRESS_OptimsticQueue( test_fixture ) \
- CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP, 0 ) \
- CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP_michaelAlloc, 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_michaelAlloc, 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 )
+ CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_HP ) \
+ CDSSTRESS_Queue_F( test_fixture, OptimisticQueue_DHP ) \
+ CDSSTRESS_OptimsticQueue_1( test_fixture )
#define CDSSTRESS_BasketQueue( test_fixture ) \
- CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP, 0 ) \
- CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP_michaelAlloc, 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_michaelAlloc, 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 )
+ CDSSTRESS_Queue_F( test_fixture, BasketQueue_HP ) \
+ CDSSTRESS_Queue_F( test_fixture, BasketQueue_DHP ) \
+ CDSSTRESS_BasketQueue_1( test_fixture )
#define CDSSTRESS_FCQueue( test_fixture ) \
- 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 )
+ CDSSTRESS_Queue_F( test_fixture, FCQueue_deque ) \
+ CDSSTRESS_Queue_F( test_fixture, FCQueue_list ) \
+ CDSSTRESS_FCQueue_1( test_fixture )
+
#define CDSSTRESS_FCDeque( test_fixture ) \
- 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 )
+ CDSSTRESS_Queue_F( test_fixture, FCDequeL_default ) \
+ CDSSTRESS_Queue_F( test_fixture, FCDequeR_default ) \
+ CDSSTRESS_FCDeque_1( test_fixture )
+
+#define CDSSTRESS_FCDeque_HeavyValue( test_fixture ) \
+ CDSSTRESS_FCQueue_F( test_fixture, FCDequeL_HeavyValue_default ) \
+ CDSSTRESS_FCDeque_HeavyValue_1( test_fixture )
#define CDSSTRESS_RWQueue( test_fixture ) \
- 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 )
+ CDSSTRESS_Queue_F( test_fixture, RWQueue_Spin ) \
+ CDSSTRESS_RWQueue_1( test_fixture )
#define CDSSTRESS_SegmentedQueue( test_fixture ) \
- 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_TsigasQueue( test_fixture ) \
- CDSSTRESS_Queue_F( test_fixture, TsigasCycleQueue_dyn, 0 ) \
- CDSSTRESS_Queue_F( test_fixture, TsigasCycleQueue_dyn_michaelAlloc, 0 ) \
- CDSSTRESS_Queue_F( test_fixture, TsigasCycleQueue_dyn_ic, 1 )
+ CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_spin ) \
+ CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_HP_spin_padding ) \
+ CDSSTRESS_Queue_F( test_fixture, SegmentedQueue_DHP_spin ) \
+ CDSSTRESS_SegmentedQueue_1( test_fixture )
#define CDSSTRESS_VyukovQueue( test_fixture ) \
- CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn, 0 ) \
- CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn_michaelAlloc, 0 ) \
- CDSSTRESS_Queue_F( test_fixture, VyukovMPMCCycleQueue_dyn_ic, 1 )
+ 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, 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 )
+ CDSSTRESS_Queue_F( test_fixture, StdQueue_deque_Spinlock ) \
+ CDSSTRESS_Queue_F( test_fixture, StdQueue_list_Spinlock ) \
+ CDSSTRESS_StdQueue_1( test_fixture ) \
#endif // #ifndef CDSSTRESS_QUEUE_TYPES_H