/*
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:
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_STACK_TYPES_H
#include <vector>
#include <cds_test/stress_test.h>
+#include <cds_test/stat_flat_combining_out.h>
namespace stack {
bool pop( T& v )
{
unique_lock l( m_Lock );
- if ( !m_Impl.empty() ) {
+ if ( !m_Impl.empty()) {
v = m_Impl.top();
m_Impl.pop();
return true;
struct traits_Treiber_exp: public
cds::container::treiber_stack::make_traits<
cds::opt::back_off<
- cds::backoff::exponential<
- cds::backoff::pause,
- cds::backoff::yield
- >
+ cds::backoff::make_exponential_t<cds::backoff::pause, cds::backoff::yield >
>
>::type
{};
cds::container::treiber_stack::make_traits <
cds::opt::enable_elimination<true>
,cds::opt::back_off<
- cds::backoff::exponential<
- cds::backoff::pause,
- cds::backoff::yield
- >
+ cds::backoff::make_exponential_t< cds::backoff::pause, cds::backoff::yield >
>
> ::type
{};
<< CDSSTRESS_STAT_OUT( s, m_nPop )
<< CDSSTRESS_STAT_OUT( s, m_nFailedPop )
<< 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<cds::algo::flat_combining::stat<> const&>( s );
}
static inline property_stream& operator <<( property_stream& o, cds::container::fcdeque::empty_stat const& /*s*/ )
<< 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<cds::algo::flat_combining::stat<> const&>(s);
}
} // namespace cds_test
#define CDSSTRESS_TreiberStack( test_fixture ) \
CDSSTRESS_Stack_F( test_fixture, Treiber_HP ) \
- CDSSTRESS_Stack_F( test_fixture, Treiber_HP_seqcst ) \
CDSSTRESS_Stack_F( test_fixture, Treiber_HP_pause ) \
CDSSTRESS_Stack_F( test_fixture, Treiber_HP_exp ) \
- CDSSTRESS_Stack_F( test_fixture, Treiber_HP_stat ) \
CDSSTRESS_Stack_F( test_fixture, Treiber_DHP ) \
CDSSTRESS_Stack_F( test_fixture, Treiber_DHP_pause ) \
- CDSSTRESS_Stack_F( test_fixture, Treiber_DHP_exp ) \
- CDSSTRESS_Stack_F( test_fixture, Treiber_DHP_stat ) \
+ CDSSTRESS_Stack_F( test_fixture, Treiber_DHP_exp )
#define CDSSTRESS_EliminationStack( test_fixture ) \
CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP ) \
- CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_2ms ) \
- CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_2ms_stat) \
- CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_5ms ) \
- CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_5ms_stat) \
- CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_10ms ) \
- CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_10ms_stat) \
- CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_seqcst ) \
CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_pause ) \
CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_exp ) \
- CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_stat ) \
CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_dyn ) \
- CDSSTRESS_EliminationStack_F( test_fixture, Elimination_HP_dyn_stat) \
CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP ) \
- CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_2ms ) \
- CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_2ms_stat) \
- CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_5ms ) \
- CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_5ms_stat) \
- CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_10ms ) \
- CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_10ms_stat) \
CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_pause ) \
CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_exp ) \
- CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_stat ) \
- CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_dyn ) \
- CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_dyn_stat)
+ CDSSTRESS_EliminationStack_F( test_fixture, Elimination_DHP_dyn )
#define CDSSTRESS_FCStack( test_fixture ) \
CDSSTRESS_Stack_F( test_fixture, FCStack_deque ) \
CDSSTRESS_Stack_F( test_fixture, FCStack_deque_mutex ) \
- CDSSTRESS_Stack_F( test_fixture, FCStack_deque_stat ) \
CDSSTRESS_Stack_F( test_fixture, FCStack_deque_elimination ) \
- CDSSTRESS_Stack_F( test_fixture, FCStack_deque_elimination_stat ) \
CDSSTRESS_Stack_F( test_fixture, FCStack_vector ) \
CDSSTRESS_Stack_F( test_fixture, FCStack_vector_mutex ) \
- CDSSTRESS_Stack_F( test_fixture, FCStack_vector_stat ) \
CDSSTRESS_Stack_F( test_fixture, FCStack_vector_elimination ) \
- CDSSTRESS_Stack_F( test_fixture, FCStack_vector_elimination_stat ) \
CDSSTRESS_Stack_F( test_fixture, FCStack_list ) \
CDSSTRESS_Stack_F( test_fixture, FCStack_list_mutex ) \
- CDSSTRESS_Stack_F( test_fixture, FCStack_list_stat ) \
- CDSSTRESS_Stack_F( test_fixture, FCStack_list_elimination ) \
- CDSSTRESS_Stack_F( test_fixture, FCStack_list_elimination_stat )
+ CDSSTRESS_Stack_F( test_fixture, FCStack_list_elimination )
#define CDSSTRESS_FCDeque( test_fixture ) \
CDSSTRESS_Stack_F( test_fixture, FCDequeL_default ) \
CDSSTRESS_Stack_F( test_fixture, FCDequeL_mutex ) \
- CDSSTRESS_Stack_F( test_fixture, FCDequeL_stat ) \
CDSSTRESS_Stack_F( test_fixture, FCDequeL_elimination ) \
- CDSSTRESS_Stack_F( test_fixture, FCDequeL_elimination_stat ) \
CDSSTRESS_Stack_F( test_fixture, FCDequeR_default ) \
CDSSTRESS_Stack_F( test_fixture, FCDequeR_mutex ) \
- CDSSTRESS_Stack_F( test_fixture, FCDequeR_stat ) \
- CDSSTRESS_Stack_F( test_fixture, FCDequeR_elimination ) \
- CDSSTRESS_Stack_F( test_fixture, FCDequeR_elimination_stat )
+ CDSSTRESS_Stack_F( test_fixture, FCDequeR_elimination )
#define CDSSTRESS_StdStack( test_fixture ) \
CDSSTRESS_Stack_F( test_fixture, StdStack_Deque_Mutex ) \