cds::urcu::details::thread_data< cds::urcu::general_threaded_tag > * m_pGPTRCU;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
cds::urcu::details::thread_data< cds::urcu::signal_buffered_tag > * m_pSHBRCU;
- cds::urcu::details::thread_data< cds::urcu::signal_threaded_tag > * m_pSHTRCU;
#endif
//@endcond
, m_pGPTRCU( nullptr )
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
, m_pSHBRCU( nullptr )
- , m_pSHTRCU( nullptr )
#endif
, m_nFakeProcessorNumber( s_nLastUsedProcNo.fetch_add(1, atomics::memory_order_relaxed) % s_nProcCount )
, m_nAttachCount(0)
assert( m_pGPTRCU == nullptr );
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
assert( m_pSHBRCU == nullptr );
- assert( m_pSHTRCU == nullptr );
#endif
}
ThreadData * p = Manager::thread_data();
return p ? p->m_pSHBRCU : nullptr;
}
- template<>
- inline cds::urcu::details::thread_data<cds::urcu::signal_threaded_tag> * getRCU<cds::urcu::signal_threaded_tag>()
- {
- ThreadData * p = Manager::thread_data();
- return p ? p->m_pSHTRCU : nullptr;
- }
#endif
static inline cds::algo::elimination::record& elimination_record()
design, thus being appropriate for use within a general-purpose library, but it has
relatively higher read-side overhead. The \p libcds contains several implementations of general-purpose
%RCU: \ref general_instant, \ref general_buffered, \ref general_threaded.
- - The signal-handling %RCU presents an implementation having low read-side overhead and
+ - \ref signal_buffered: the signal-handling %RCU presents an implementation having low read-side overhead and
requiring only that the application give up one POSIX signal to %RCU update processing.
- The \p libcds contains several implementations if signal-handling %RCU: \ref signal_buffered,
- \ref signal_threaded.
@note The signal-handled %RCU is defined only for UNIX-like systems, not for Windows.
- \ref general_buffered - general purpose RCU with deferred (buffered) reclamation
- \ref general_threaded - general purpose RCU with special reclamation thread
- \ref signal_buffered - signal-handling RCU with deferred (buffered) reclamation
- - \ref signal_threaded - signal-handling RCU with special reclamation thread
You cannot create an object of any of those classes directly.
Instead, you should use wrapper classes.
include file <tt><cds/urcu/general_threaded.h></tt>
- \ref cds_urcu_signal_buffered_gc "gc<signal_buffered>" - signal-handling RCU with deferred (buffered) reclamation
include file <tt><cds/urcu/signal_buffered.h></tt>
- - \ref cds_urcu_signal_threaded_gc "gc<signal_threaded>" - signal-handling RCU with special reclamation thread
- include file <tt><cds/urcu/signal_threaded.h></tt>
Any RCU-related container in \p libcds expects that its \p RCU template parameter is one of those wrapper.
- \ref general_buffered_tag - for \ref general_buffered
- \ref general_threaded_tag - for \ref general_threaded
- \ref signal_buffered_tag - for \ref signal_buffered
- - \ref signal_threaded_tag - for \ref signal_threaded
@anchor cds_urcu_performance
<b>Performance</b>
- <tt>gc<general_buffered></tt> - high
- <tt>gc<general_threaded></tt>
- <tt>gc<signal_buffered></tt>
- - <tt>gc<signal_threaded></tt>
- <tt>gc<general_instant></tt> - low
This estimation is very rough and depends on many factors:
with different template arguments is an error and is not supported.
However, it is correct when your RCU objects relates to different RCU types.
- @note If you want to use \p %signal_buffered and \p %signal_threaded RCU in your application simultaneously,
- you should specify different signal number for each signal-handled RCU type on construction time,
- for example, \p SIGUSR1 and \p SIGUSR2 respectively. By default, both signal-handled RCU implementation
- share \p SIGUSR1 signal and cannot be applied together.
-
In \p libcds, many GC-based ordered list, set and map template classes have %RCU-related specializations
that hide the %RCU specific details.
struct signal_buffered_tag: public signal_handling_rcu {
typedef signal_handling_rcu rcu_class ; ///< The URCU type
};
-
- /// Tag for signal_threaded URCU
- struct signal_threaded_tag: public signal_handling_rcu {
- typedef signal_handling_rcu rcu_class ; ///< The URCU type
- };
# endif
///@anchor cds_urcu_retired_ptr Retired pointer, i.e. pointer that ready for reclamation
}
CDS_SHURCU_DECLARE_THREAD_DATA( signal_buffered_tag );
- CDS_SHURCU_DECLARE_THREAD_DATA( signal_threaded_tag );
# undef CDS_SHURCU_DECLARE_THREAD_DATA
};
#if CDS_COMPILER != CDS_COMPILER_MSVC
template<> CDS_EXPORT_API singleton_vtbl * sh_singleton_instance< signal_buffered_tag >::s_pRCU;
- template<> CDS_EXPORT_API singleton_vtbl * sh_singleton_instance< signal_threaded_tag >::s_pRCU;
#endif
template <typename SigRCUtag>
# define CDS_SH_RCU_DECLARE_THREAD_GC( tag_ ) template <> class thread_gc<tag_>: public sh_thread_gc<tag_> {}
CDS_SH_RCU_DECLARE_THREAD_GC( signal_buffered_tag );
- CDS_SH_RCU_DECLARE_THREAD_GC( signal_threaded_tag );
# undef CDS_SH_RCU_DECLARE_THREAD_GC
}
CDS_SIGRCU_DECLARE_SINGLETON( signal_buffered_tag );
- CDS_SIGRCU_DECLARE_SINGLETON( signal_threaded_tag );
# undef CDS_SIGRCU_DECLARE_SINGLETON
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#ifndef CDSLIB_URCU_DETAILS_SIG_THREADED_H
-#define CDSLIB_URCU_DETAILS_SIG_THREADED_H
-
-#include <cds/urcu/details/sh.h>
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include <mutex> //unique_lock
-#include <limits>
-#include <cds/urcu/dispose_thread.h>
-#include <cds/algo/backoff_strategy.h>
-#include <cds/container/vyukov_mpmc_cycle_queue.h>
-
-namespace cds { namespace urcu {
-
- /// User-space signal-handled RCU with deferred threaded reclamation
- /**
- @headerfile cds/urcu/signal_threaded.h
-
- This implementation is similar to \ref signal_buffered but separate thread is created
- for deleting the retired objects. Like \p %signal_buffered, the class contains an internal buffer
- where retired objects are accumulated. When the buffer becomes full,
- the RCU \p synchronize function is called that waits until all reader/updater threads end up their read-side critical sections,
- i.e. until the RCU quiescent state will come. After that the "work ready" message is sent to reclamation thread.
- The reclamation thread frees the buffer.
- This synchronization cycle may be called in any thread that calls \ref retire_ptr function.
-
- There is a wrapper \ref cds_urcu_signal_threaded_gc "gc<signal_threaded>" for \p %signal_threaded class
- that provides unified RCU interface. You should use this wrapper class instead \p %signal_threaded
-
- Template arguments:
- - \p Buffer - buffer type with FIFO semantics. Default is \p cds::container::VyukovMPSCCycleQueue. See \ref signal_buffered
- for description of buffer's interface. The buffer contains the objects of \ref epoch_retired_ptr
- type that contains additional \p m_nEpoch field. This field specifies an epoch when the object
- has been placed into the buffer. The \p %signal_threaded object has a global epoch counter
- that is incremented on each \p synchronize() call. The epoch is used internally to prevent early deletion.
- - \p Lock - mutex type, default is \p std::mutex
- - \p DisposerThread - the reclamation thread class. Default is \ref cds::urcu::dispose_thread,
- see the description of this class for required interface.
- - \p Backoff - back-off schema, default is cds::backoff::Default
- */
- template <
- class Buffer = cds::container::VyukovMPSCCycleQueue< epoch_retired_ptr >
- ,class Lock = std::mutex
- ,class DisposerThread = dispose_thread<Buffer>
- ,class Backoff = cds::backoff::Default
- >
- class signal_threaded: public details::sh_singleton< signal_threaded_tag >
- {
- //@cond
- typedef details::sh_singleton< signal_threaded_tag > base_class;
- //@endcond
- public:
- typedef Buffer buffer_type ; ///< Buffer type
- typedef Lock lock_type ; ///< Lock type
- typedef Backoff back_off ; ///< Back-off scheme
- typedef DisposerThread disposer_thread ; ///< Disposer thread type
-
- typedef signal_threaded_tag rcu_tag ; ///< Thread-side RCU part
- typedef base_class::thread_gc thread_gc ; ///< Access lock class
- typedef typename thread_gc::scoped_lock scoped_lock ; ///< Access lock class
-
- static bool const c_bBuffered = true ; ///< This RCU buffers disposed elements
-
- protected:
- //@cond
- typedef details::sh_singleton_instance< rcu_tag > singleton_ptr;
-
- struct scoped_disposer {
- void operator ()( signal_threaded * p )
- {
- delete p;
- }
- };
- //@endcond
-
- protected:
- //@cond
- buffer_type m_Buffer;
- atomics::atomic<uint64_t> m_nCurEpoch;
- lock_type m_Lock;
- size_t const m_nCapacity;
- disposer_thread m_DisposerThread;
- //@endcond
-
- public:
- /// Returns singleton instance
- static signal_threaded * instance()
- {
- return static_cast<signal_threaded *>( base_class::instance());
- }
- /// Checks if the singleton is created and ready to use
- static bool isUsed()
- {
- return singleton_ptr::s_pRCU != nullptr;
- }
-
- protected:
- //@cond
- signal_threaded( size_t nBufferCapacity, int nSignal = SIGUSR1 )
- : base_class( nSignal )
- , m_Buffer( nBufferCapacity )
- , m_nCurEpoch( 1 )
- , m_nCapacity( nBufferCapacity )
- {}
-
- // Return: true - synchronize has been called, false - otherwise
- bool push_buffer( epoch_retired_ptr&& p )
- {
- bool bPushed = m_Buffer.push( p );
- if ( !bPushed || m_Buffer.size() >= capacity()) {
- synchronize();
- if ( !bPushed ) {
- p.free();
- }
- return true;
- }
- return false;
- }
-
- //@endcond
-
- public:
- //@cond
- ~signal_threaded()
- {}
- //@endcond
-
- /// Creates singleton object and starts reclamation thread
- /**
- The \p nBufferCapacity parameter defines RCU threshold.
-
- The \p nSignal parameter defines a signal number stated for RCU, default is \p SIGUSR1
- */
- static void Construct( size_t nBufferCapacity = 256, int nSignal = SIGUSR1 )
- {
- if ( !singleton_ptr::s_pRCU ) {
- std::unique_ptr< signal_threaded, scoped_disposer > pRCU( new signal_threaded( nBufferCapacity, nSignal ));
- pRCU->m_DisposerThread.start();
-
- singleton_ptr::s_pRCU = pRCU.release();
- }
- }
-
- /// Destroys singleton object and terminates internal reclamation thread
- static void Destruct( bool bDetachAll = false )
- {
- if ( isUsed()) {
- signal_threaded * pThis = instance();
- if ( bDetachAll )
- pThis->m_ThreadList.detach_all();
-
- pThis->m_DisposerThread.stop( pThis->m_Buffer, std::numeric_limits< uint64_t >::max());
-
- delete pThis;
- singleton_ptr::s_pRCU = nullptr;
- }
- }
-
- public:
- /// Retires \p p pointer
- /**
- The method pushes \p p pointer to internal buffer.
- When the buffer becomes full \ref synchronize function is called
- to wait for the end of grace period and then
- a message is sent to the reclamation thread.
- */
- virtual void retire_ptr( retired_ptr& p )
- {
- if ( p.m_p )
- push_buffer( epoch_retired_ptr( p, m_nCurEpoch.load( atomics::memory_order_acquire )));
- }
-
- /// Retires the pointer chain [\p itFirst, \p itLast)
- template <typename ForwardIterator>
- void batch_retire( ForwardIterator itFirst, ForwardIterator itLast )
- {
- uint64_t nEpoch = m_nCurEpoch.load( atomics::memory_order_relaxed );
- while ( itFirst != itLast ) {
- epoch_retired_ptr ep( *itFirst, nEpoch );
- ++itFirst;
- push_buffer( std::move(ep));
- }
- }
-
- /// Retires the pointer chain until \p Func returns \p nullptr retired pointer
- template <typename Func>
- void batch_retire( Func e )
- {
- uint64_t nEpoch = m_nCurEpoch.load( atomics::memory_order_relaxed );
- for ( retired_ptr p{ e() }; p.m_p; ) {
- epoch_retired_ptr ep( p, nEpoch );
- p = e();
- push_buffer( std::move(ep));
- }
- }
-
-
- /// Waits to finish a grace period and calls disposing thread
- void synchronize()
- {
- synchronize( false );
- }
-
- //@cond
- void synchronize( bool bSync )
- {
- uint64_t nPrevEpoch = m_nCurEpoch.fetch_add( 1, atomics::memory_order_release );
-
- {
- std::unique_lock<lock_type> sl( m_Lock );
-
- back_off bkOff;
- base_class::force_membar_all_threads( bkOff );
- base_class::switch_next_epoch();
- bkOff.reset();
- base_class::wait_for_quiescent_state( bkOff );
- base_class::switch_next_epoch();
- bkOff.reset();
- base_class::wait_for_quiescent_state( bkOff );
- base_class::force_membar_all_threads( bkOff );
-
- m_DisposerThread.dispose( m_Buffer, nPrevEpoch, bSync );
- }
- }
- void force_dispose()
- {
- synchronize( true );
- }
- //@endcond
-
- /// Returns the threshold of internal buffer
- size_t capacity() const
- {
- return m_nCapacity;
- }
-
- /// Returns the signal number stated for RCU
- int signal_no() const
- {
- return base_class::signal_no();
- }
- };
-
-
- /// User-space signal-handled RCU with deferred threaded reclamation (stripped version)
- /**
- @headerfile cds/urcu/signal_threaded.h
-
- This short version of \p signal_threaded is intended for stripping debug info.
- If you use \p %signal_threaded with default template arguments you may use
- this stripped version. All functionality of both classes are identical.
- */
- class signal_threaded_stripped: public signal_threaded<>
- {};
-
-}} // namespace cds::urcu
-
-#endif // #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-#endif // #ifndef CDSLIB_URCU_DETAILS_SIG_THREADED_H
namespace cds { namespace urcu {
- /// Reclamation thread for \p general_threaded and \p signal_threaded URCU
+ /// Reclamation thread for \p general_threaded URCU
/**
The object of this class contains a reclamation thread object and
necessary synchronization object(s). The object manages reclamation thread
and defines a set of messages (i.e. methods) to communicate with the thread.
- Template argument \p Buffer defines the buffer type of \ref general_threaded (or \ref signal_threaded) URCU.
+ Template argument \p Buffer defines the buffer type of \ref general_threaded URCU.
*/
template <class Buffer>
class dispose_thread
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#ifndef CDSLIB_URCU_SIGNAL_THREADED_H
-#define CDSLIB_URCU_SIGNAL_THREADED_H
-
-#include <cds/urcu/details/sig_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-namespace cds { namespace urcu {
-
- /// User-space signal-handled RCU with special thread for deferred reclamation
- /** @anchor cds_urcu_signal_threaded_gc
-
- This is a wrapper around \p signal_threaded class.
-
- Template arguments:
- - \p Buffer - lock-free MPSC (muliple producer/single consumer) queue.
- Default is \p cds::container::VyukovMPSCCycleQueue< epoch_retired_ptr >
- - \p Lock - mutex type, default is \p std::mutex
- - \p DisposerThread - reclamation thread class, default is \p %general_threaded_dispose_thread
- See \ref cds::urcu::dispose_thread for class interface.
- - \p Backoff - back-off schema, default is \p cds::backoff::Default
-
- */
- template <
-#ifdef CDS_DOXGEN_INVOKED
- class Buffer = cds::container::VyukovMPSCCycleQueue< epoch_retired_ptr >
- ,class Lock = std::mutex
- ,class DisposerThread = dispose_thread<Buffer>
- ,class Backoff = cds::backoff::Default
-#else
- class Buffer
- ,class Lock
- ,class DisposerThread
- ,class Backoff
-#endif
- >
- class gc< signal_threaded< Buffer, Lock, DisposerThread, Backoff > >: public details::gc_common
- {
- public:
- typedef signal_threaded< Buffer, Lock, DisposerThread, Backoff > rcu_implementation ; ///< Wrapped URCU implementation
-
- typedef typename rcu_implementation::rcu_tag rcu_tag ; ///< URCU tag
- typedef typename rcu_implementation::thread_gc thread_gc ; ///< Thread-side RCU part
- typedef typename rcu_implementation::scoped_lock scoped_lock ; ///< Access lock class
-
- using details::gc_common::atomic_marked_ptr;
-
- public:
- /// Creates URCU \p %general_threaded singleton.
- /**
- The \p nBufferCapacity parameter defines RCU threshold.
-
- The \p nSignal parameter defines a signal number stated for RCU, default is \p SIGUSR1
- */
- gc( size_t nBufferCapacity = 256, int nSignal = SIGUSR1 )
- {
- rcu_implementation::Construct( nBufferCapacity, nSignal );
- }
-
- /// Destroys URCU \p %signal_threaded singleton
- ~gc()
- {
- rcu_implementation::Destruct( true );
- }
-
- public:
- /// Waits to finish a grace period and calls disposing thread
- /**
- After grace period finished the function gives new task to disposing thread.
- Unlike \ref force_dispose the \p %synchronize function does not wait for
- task ending. Only a "task ready" message is sent to disposing thread.
- */
- static void synchronize()
- {
- rcu_implementation::instance()->synchronize();
- }
-
- /// Retires pointer \p p by the disposer \p pFunc
- /**
- If the buffer is full, \ref synchronize function is invoked.
- */
- template <typename T>
- static void retire_ptr( T* p, free_retired_ptr_func pFunc )
- {
- retired_ptr rp( p, pFunc );
- retire_ptr( rp );
- }
-
- /// Retires pointer \p p using \p Disposer
- /**
- If the buffer is full, \ref synchronize function is invoked.
- */
- template <typename Disposer, typename T>
- static void retire_ptr( T * p )
- {
- retire_ptr( p, cds::details::static_functor<Disposer, T>::call );
- }
-
- /// Retires pointer \p p of type \ref cds_urcu_retired_ptr "retired_ptr"
- /**
- If the buffer is full, \ref synchronize function is invoked.
- */
- static void retire_ptr( retired_ptr& p )
- {
- rcu_implementation::instance()->retire_ptr(p);
- }
-
- /// Frees chain [ \p itFirst, \p itLast) in one synchronization cycle
- template <typename ForwardIterator>
- static void batch_retire( ForwardIterator itFirst, ForwardIterator itLast )
- {
- rcu_implementation::instance()->batch_retire( itFirst, itLast );
- }
-
- /// Retires the pointer chain until \p Func returns \p nullptr retired pointer
- template <typename Func>
- static void batch_retire( Func e )
- {
- rcu_implementation::instance()->batch_retire( e );
- }
-
- /// Acquires access lock (so called RCU reader-side lock)
- /**
- For safety reasons, it is better to use \ref scoped_lock class for locking/unlocking
- */
- static void access_lock()
- {
- thread_gc::access_lock();
- }
-
- /// Releases access lock (so called RCU reader-side lock)
- /**
- For safety reasons, it is better to use \ref scoped_lock class for locking/unlocking
- */
- static void access_unlock()
- {
- thread_gc::access_unlock();
- }
-
- /// Checks if the thread is inside read-side critical section (i.e. the lock is acquired)
- /**
- Usually, this function is used internally to be convinced
- that subsequent remove action is not lead to a deadlock.
- */
- static bool is_locked()
- {
- return thread_gc::is_locked();
- }
-
- /// Returns the threshold of internal buffer
- static size_t capacity()
- {
- return rcu_implementation::instance()->capacity();
- }
-
- /// Returns the signal number stated for RCU
- static int signal_no()
- {
- return rcu_implementation::instance()->signal_no();
- }
-
- /// Forces retired object removal (synchronous version of \ref synchronize)
- /**
- The function calls \ref synchronize and waits until reclamation thread
- frees retired objects.
- */
- static void force_dispose()
- {
- rcu_implementation::instance()->force_dispose();
- }
- };
-
- //@cond
- template<>
- class gc< signal_threaded_stripped >: public gc< signal_threaded<>>
- {};
- //@endcond
-
-}} // namespace cds::urcu
-
-#endif // #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-#endif // #ifndef CDSLIB_URCU_SIGNAL_THREADED_H
- Added: erase_at( iterator ) function to MichaelHashSet/Map and SplitListSet/Map
based on IterableList
- Fixed a bug in BronsonAVLTreeMap::extract_min()/extract_max()/clear().
+ - Removed: signal-handled threaded uRCU (cds::urcu::signal_threaded) due
+ bad performance
- Added more flat-combining queue tests, thanks to Marsel Galimullin.
- Changed cmake scripts to support MacOS and ARMv7/ARMv8 (64 bit),
thanks to Michail Komarov (https://github.com/Nemo1369)
<ClInclude Include="..\..\..\cds\urcu\details\sh.h" />\r
<ClInclude Include="..\..\..\cds\urcu\details\sh_decl.h" />\r
<ClInclude Include="..\..\..\cds\urcu\details\sig_buffered.h" />\r
- <ClInclude Include="..\..\..\cds\urcu\details\sig_threaded.h" />\r
<ClInclude Include="..\..\..\cds\urcu\exempt_ptr.h" />\r
<ClInclude Include="..\..\..\cds\urcu\dispose_thread.h" />\r
<ClInclude Include="..\..\..\cds\urcu\general_buffered.h" />\r
<ClInclude Include="..\..\..\cds\urcu\options.h" />\r
<ClInclude Include="..\..\..\cds\urcu\raw_ptr.h" />\r
<ClInclude Include="..\..\..\cds\urcu\signal_buffered.h" />\r
- <ClInclude Include="..\..\..\cds\urcu\signal_threaded.h" />\r
<ClInclude Include="..\..\..\cds\init.h" />\r
<ClInclude Include="..\..\..\cds\version.h" />\r
<ClInclude Include="..\..\..\cds\details\aligned_allocator.h" />\r
<ClInclude Include="..\..\..\cds\urcu\details\sig_buffered.h">\r
<Filter>Header Files\cds\urcu\details</Filter>\r
</ClInclude>\r
- <ClInclude Include="..\..\..\cds\urcu\details\sig_threaded.h">\r
- <Filter>Header Files\cds\urcu\details</Filter>\r
- </ClInclude>\r
<ClInclude Include="..\..\..\cds\urcu\dispose_thread.h">\r
<Filter>Header Files\cds\urcu</Filter>\r
</ClInclude>\r
<ClInclude Include="..\..\..\cds\urcu\signal_buffered.h">\r
<Filter>Header Files\cds\urcu</Filter>\r
</ClInclude>\r
- <ClInclude Include="..\..\..\cds\urcu\signal_threaded.h">\r
- <Filter>Header Files\cds\urcu</Filter>\r
- </ClInclude>\r
<ClInclude Include="..\..\..\cds\intrusive\details\ellen_bintree_base.h">\r
<Filter>Header Files\cds\intrusive\details</Filter>\r
</ClInclude>\r
<ClCompile Include="..\..\..\test\unit\intrusive-list\intrusive_lazy_rcu_gpi.cpp" />
<ClCompile Include="..\..\..\test\unit\intrusive-list\intrusive_lazy_rcu_gpt.cpp" />
<ClCompile Include="..\..\..\test\unit\intrusive-list\intrusive_lazy_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\intrusive-list\intrusive_lazy_rcu_sht.cpp" />
<ClCompile Include="..\..\..\test\unit\main.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\test\unit\intrusive-list\intrusive_michael_rcu_gpi.cpp" />
<ClCompile Include="..\..\..\test\unit\intrusive-list\intrusive_michael_rcu_gpt.cpp" />
<ClCompile Include="..\..\..\test\unit\intrusive-list\intrusive_michael_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\intrusive-list\intrusive_michael_rcu_sht.cpp" />
<ClCompile Include="..\..\..\test\unit\main.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_feldman_hashset_rcu_gpi.cpp" />
<ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_feldman_hashset_rcu_gpt.cpp" />
<ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_feldman_hashset_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_feldman_hashset_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\intrusive-set\test_intrusive_feldman_hashset.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_michael_lazy_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_michael_lazy_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\intrusive-set\test_intrusive_michael_lazy_rcu.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_michael_michael_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_michael_michael_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\intrusive-set\test_intrusive_michael_michael_rcu.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_skiplist_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_skiplist_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\intrusive-set\test_intrusive_set.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_split_lazy_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_split_lazy_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\intrusive-set\test_intrusive_set.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_split_michael_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_split_michael_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\intrusive-set\test_intrusive_set.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\list\kv_lazy_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\list\kv_lazy_rcu_sht.cpp" />
<ClCompile Include="..\..\..\test\unit\list\lazy_dhp.cpp" />
<ClCompile Include="..\..\..\test\unit\list\lazy_hp.cpp" />
<ClCompile Include="..\..\..\test\unit\list\lazy_nogc.cpp" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\list\lazy_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\list\lazy_rcu_sht.cpp" />
<ClCompile Include="..\..\..\test\unit\main.cpp" />
</ItemGroup>
<PropertyGroup Label="Globals">
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\list\kv_michael_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\list\kv_michael_rcu_sht.cpp" />
<ClCompile Include="..\..\..\test\unit\list\michael_dhp.cpp" />
<ClCompile Include="..\..\..\test\unit\list\michael_hp.cpp" />
<ClCompile Include="..\..\..\test\unit\list\michael_nogc.cpp" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\list\michael_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\list\michael_rcu_sht.cpp" />
<ClCompile Include="..\..\..\test\unit\main.cpp" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ClCompile Include="..\..\..\test\unit\map\feldman_hashset_rcu_gpi.cpp" />
<ClCompile Include="..\..\..\test\unit\map\feldman_hashset_rcu_gpt.cpp" />
<ClCompile Include="..\..\..\test\unit\map\feldman_hashset_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\map\feldman_hashset_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\map\test_feldman_hashmap.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\map\michael_lazy_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\map\michael_lazy_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\map\test_map.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\map\michael_michael_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\map\michael_michael_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\map\test_map.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\map\skiplist_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\map\skiplist_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\map\test_feldman_hashmap.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\map\split_lazy_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\map\split_lazy_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\map\test_map.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\map\split_michael_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\map\split_michael_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\map\test_map.h" />
<ClCompile Include="..\..\..\test\unit\set\feldman_hashset_rcu_gpi.cpp" />
<ClCompile Include="..\..\..\test\unit\set\feldman_hashset_rcu_gpt.cpp" />
<ClCompile Include="..\..\..\test\unit\set\feldman_hashset_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\set\feldman_hashset_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\set\test_feldman_hashset.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\set\michael_lazy_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\set\michael_lazy_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\set\test_michael_lazy_rcu.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\set\michael_michael_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\set\michael_michael_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\set\test_michael_michael_rcu.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\set\skiplist_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\set\skiplist_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\set\test_ordered_set_hp.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\set\split_lazy_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\set\split_lazy_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\set\test_ordered_set_hp.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\set\split_michael_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\set\split_michael_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\set\test_ordered_set_hp.h" />
<ClCompile Include="..\..\..\test\unit\tree\bronson_avltree_map_ptr_rcu_gpi.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\bronson_avltree_map_ptr_rcu_gpt.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\bronson_avltree_map_ptr_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\tree\bronson_avltree_map_ptr_rcu_sht.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\bronson_avltree_map_rcu_gpb.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\bronson_avltree_map_rcu_gpi.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\bronson_avltree_map_rcu_gpt.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\bronson_avltree_map_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\tree\bronson_avltree_map_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\tree\test_bronson_avltree_map.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_map_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_map_rcu_sht.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_set_dhp.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_set_hp.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_set_rcu_gpb.cpp">
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_set_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_set_rcu_sht.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_update_desc_pool.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\intrusive_ellenbintree_dhp.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\intrusive_ellenbintree_hp.cpp" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\tree\intrusive_ellenbintree_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\tree\intrusive_ellenbintree_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\tree\test_ellen_bintree_map_rcu.h" />
<ClCompile Include="..\..\..\test\unit\tree\intrusive_ellenbintree_rcu_shb.cpp">
<Filter>Source Files\intrusive.EllenBinTree</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\test\unit\tree\intrusive_ellenbintree_rcu_sht.cpp">
- <Filter>Source Files\intrusive.EllenBinTree</Filter>
- </ClCompile>
<ClCompile Include="..\..\..\test\unit\main.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_set_rcu_shb.cpp">
<Filter>Source Files\EllenBinTreeSet</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_set_rcu_sht.cpp">
- <Filter>Source Files\EllenBinTreeSet</Filter>
- </ClCompile>
<ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_set_dhp.cpp">
<Filter>Source Files\EllenBinTreeSet</Filter>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_map_rcu_shb.cpp">
<Filter>Source Files\EllenBinTreeMap</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_map_rcu_sht.cpp">
- <Filter>Source Files\EllenBinTreeMap</Filter>
- </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\tree\test_intrusive_tree.h">
<ClInclude Include="..\..\..\cds\urcu\details\sh.h" />
<ClInclude Include="..\..\..\cds\urcu\details\sh_decl.h" />
<ClInclude Include="..\..\..\cds\urcu\details\sig_buffered.h" />
- <ClInclude Include="..\..\..\cds\urcu\details\sig_threaded.h" />
<ClInclude Include="..\..\..\cds\urcu\exempt_ptr.h" />
<ClInclude Include="..\..\..\cds\urcu\dispose_thread.h" />
<ClInclude Include="..\..\..\cds\urcu\general_buffered.h" />
<ClInclude Include="..\..\..\cds\urcu\options.h" />
<ClInclude Include="..\..\..\cds\urcu\raw_ptr.h" />
<ClInclude Include="..\..\..\cds\urcu\signal_buffered.h" />
- <ClInclude Include="..\..\..\cds\urcu\signal_threaded.h" />
<ClInclude Include="..\..\..\cds\init.h" />
<ClInclude Include="..\..\..\cds\version.h" />
<ClInclude Include="..\..\..\cds\details\aligned_allocator.h" />
<ClInclude Include="..\..\..\cds\urcu\details\sig_buffered.h">
<Filter>Header Files\cds\urcu\details</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\cds\urcu\details\sig_threaded.h">
- <Filter>Header Files\cds\urcu\details</Filter>
- </ClInclude>
<ClInclude Include="..\..\..\cds\urcu\dispose_thread.h">
<Filter>Header Files\cds\urcu</Filter>
</ClInclude>
<ClInclude Include="..\..\..\cds\urcu\signal_buffered.h">
<Filter>Header Files\cds\urcu</Filter>
</ClInclude>
- <ClInclude Include="..\..\..\cds\urcu\signal_threaded.h">
- <Filter>Header Files\cds\urcu</Filter>
- </ClInclude>
<ClInclude Include="..\..\..\cds\intrusive\details\ellen_bintree_base.h">
<Filter>Header Files\cds\intrusive\details</Filter>
</ClInclude>
<ClCompile Include="..\..\..\test\unit\intrusive-list\intrusive_lazy_rcu_gpi.cpp" />
<ClCompile Include="..\..\..\test\unit\intrusive-list\intrusive_lazy_rcu_gpt.cpp" />
<ClCompile Include="..\..\..\test\unit\intrusive-list\intrusive_lazy_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\intrusive-list\intrusive_lazy_rcu_sht.cpp" />
<ClCompile Include="..\..\..\test\unit\main.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\test\unit\intrusive-list\intrusive_michael_rcu_gpi.cpp" />
<ClCompile Include="..\..\..\test\unit\intrusive-list\intrusive_michael_rcu_gpt.cpp" />
<ClCompile Include="..\..\..\test\unit\intrusive-list\intrusive_michael_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\intrusive-list\intrusive_michael_rcu_sht.cpp" />
<ClCompile Include="..\..\..\test\unit\main.cpp" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_feldman_hashset_rcu_gpi.cpp" />
<ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_feldman_hashset_rcu_gpt.cpp" />
<ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_feldman_hashset_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_feldman_hashset_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\intrusive-set\test_intrusive_feldman_hashset.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_michael_lazy_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_michael_lazy_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\intrusive-set\test_intrusive_michael_lazy_rcu.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_michael_michael_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_michael_michael_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\intrusive-set\test_intrusive_michael_michael_rcu.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_skiplist_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_skiplist_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\intrusive-set\test_intrusive_set.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_split_lazy_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_split_lazy_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\intrusive-set\test_intrusive_set.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_split_michael_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\intrusive-set\intrusive_split_michael_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\intrusive-set\test_intrusive_set.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\list\kv_lazy_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\list\kv_lazy_rcu_sht.cpp" />
<ClCompile Include="..\..\..\test\unit\list\lazy_dhp.cpp" />
<ClCompile Include="..\..\..\test\unit\list\lazy_hp.cpp" />
<ClCompile Include="..\..\..\test\unit\list\lazy_nogc.cpp" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\list\lazy_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\list\lazy_rcu_sht.cpp" />
<ClCompile Include="..\..\..\test\unit\main.cpp" />
</ItemGroup>
<PropertyGroup Label="Globals">
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\list\kv_michael_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\list\kv_michael_rcu_sht.cpp" />
<ClCompile Include="..\..\..\test\unit\list\michael_dhp.cpp" />
<ClCompile Include="..\..\..\test\unit\list\michael_hp.cpp" />
<ClCompile Include="..\..\..\test\unit\list\michael_nogc.cpp" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\list\michael_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\list\michael_rcu_sht.cpp" />
<ClCompile Include="..\..\..\test\unit\main.cpp" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ClCompile Include="..\..\..\test\unit\map\feldman_hashset_rcu_gpi.cpp" />
<ClCompile Include="..\..\..\test\unit\map\feldman_hashset_rcu_gpt.cpp" />
<ClCompile Include="..\..\..\test\unit\map\feldman_hashset_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\map\feldman_hashset_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\map\test_feldman_hashmap.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\map\michael_lazy_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\map\michael_lazy_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\map\test_map.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\map\michael_michael_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\map\michael_michael_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\map\test_map.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\map\skiplist_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\map\skiplist_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\map\test_feldman_hashmap.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\map\split_lazy_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\map\split_lazy_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\map\test_map.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\map\split_michael_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\map\split_michael_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\map\test_map.h" />
<ClCompile Include="..\..\..\test\unit\set\feldman_hashset_rcu_gpi.cpp" />
<ClCompile Include="..\..\..\test\unit\set\feldman_hashset_rcu_gpt.cpp" />
<ClCompile Include="..\..\..\test\unit\set\feldman_hashset_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\set\feldman_hashset_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\set\test_feldman_hashset.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\set\michael_lazy_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\set\michael_lazy_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\set\test_michael_lazy_rcu.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\set\michael_michael_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\set\michael_michael_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\set\test_michael_michael_rcu.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\set\skiplist_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\set\skiplist_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\set\test_ordered_set_hp.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\set\split_lazy_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\set\split_lazy_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\set\test_ordered_set_hp.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\set\split_michael_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\set\split_michael_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\set\test_ordered_set_hp.h" />
<ClCompile Include="..\..\..\test\unit\tree\bronson_avltree_map_ptr_rcu_gpi.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\bronson_avltree_map_ptr_rcu_gpt.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\bronson_avltree_map_ptr_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\tree\bronson_avltree_map_ptr_rcu_sht.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\bronson_avltree_map_rcu_gpb.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\bronson_avltree_map_rcu_gpi.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\bronson_avltree_map_rcu_gpt.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\bronson_avltree_map_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\tree\bronson_avltree_map_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\tree\test_bronson_avltree_map.h" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_map_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_map_rcu_sht.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_set_dhp.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_set_hp.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_set_rcu_gpb.cpp">
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_set_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_set_rcu_sht.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_update_desc_pool.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\intrusive_ellenbintree_dhp.cpp" />
<ClCompile Include="..\..\..\test\unit\tree\intrusive_ellenbintree_hp.cpp" />
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4503</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\tree\intrusive_ellenbintree_rcu_shb.cpp" />
- <ClCompile Include="..\..\..\test\unit\tree\intrusive_ellenbintree_rcu_sht.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\tree\test_ellen_bintree_map_rcu.h" />
<ClCompile Include="..\..\..\test\unit\tree\intrusive_ellenbintree_rcu_shb.cpp">
<Filter>Source Files\intrusive.EllenBinTree</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\test\unit\tree\intrusive_ellenbintree_rcu_sht.cpp">
- <Filter>Source Files\intrusive.EllenBinTree</Filter>
- </ClCompile>
<ClCompile Include="..\..\..\test\unit\main.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_set_rcu_shb.cpp">
<Filter>Source Files\EllenBinTreeSet</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_set_rcu_sht.cpp">
- <Filter>Source Files\EllenBinTreeSet</Filter>
- </ClCompile>
<ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_set_dhp.cpp">
<Filter>Source Files\EllenBinTreeSet</Filter>
</ClCompile>
<ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_map_rcu_shb.cpp">
<Filter>Source Files\EllenBinTreeMap</Filter>
</ClCompile>
- <ClCompile Include="..\..\..\test\unit\tree\ellen_bintree_map_rcu_sht.cpp">
- <Filter>Source Files\EllenBinTreeMap</Filter>
- </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\test\unit\tree\test_intrusive_tree.h">
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
if ( cds::urcu::details::singleton<cds::urcu::signal_buffered_tag>::isUsed() )
m_pSHBRCU = cds::urcu::details::singleton<cds::urcu::signal_buffered_tag>::attach_thread();
- if ( cds::urcu::details::singleton<cds::urcu::signal_threaded_tag>::isUsed() )
- m_pSHTRCU = cds::urcu::details::singleton<cds::urcu::signal_threaded_tag>::attach_thread();
#endif
}
}
cds::urcu::details::singleton<cds::urcu::signal_buffered_tag>::detach_thread( m_pSHBRCU );
m_pSHBRCU = nullptr;
}
- if ( cds::urcu::details::singleton<cds::urcu::signal_threaded_tag>::isUsed() ) {
- cds::urcu::details::singleton<cds::urcu::signal_threaded_tag>::detach_thread( m_pSHTRCU );
- m_pSHTRCU = nullptr;
- }
#endif
return true;
}
namespace cds { namespace urcu { namespace details {
template<> CDS_EXPORT_API singleton_vtbl * sh_singleton_instance< signal_buffered_tag >::s_pRCU = nullptr;
- template<> CDS_EXPORT_API singleton_vtbl * sh_singleton_instance< signal_threaded_tag >::s_pRCU = nullptr;
template <>
void sh_singleton<signal_buffered_tag>::signal_handler( int /*signo*/, siginfo_t * /*sigInfo*/, void * /*context*/ )
}
}
- template <>
- void sh_singleton<signal_threaded_tag>::signal_handler( int /*signo*/, siginfo_t * /*sigInfo*/, void * /*context*/ )
- {
- thread_record * pRec = cds::threading::getRCU<signal_threaded_tag>();
- if ( pRec ) {
- atomics::atomic_signal_fence( atomics::memory_order_acquire );
- pRec->m_bNeedMemBar.store( false, atomics::memory_order_relaxed );
- atomics::atomic_signal_fence( atomics::memory_order_release );
- }
- }
-
-
}}} // namespace cds::urcu::details
#endif //#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
# include <cds/urcu/general_buffered.h>\r
# include <cds/urcu/general_threaded.h>\r
# include <cds/urcu/signal_buffered.h>\r
-# include <cds/urcu/signal_threaded.h>\r
#endif\r
\r
#ifdef CDS_ENABLE_HPSTAT\r
# ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED\r
typedef cds::urcu::gc< cds::urcu::signal_buffered<> > rcu_shb;\r
rcu_shb shbRCU( rcu_buffer_size, SIGUSR1 );\r
-\r
- typedef cds::urcu::gc< cds::urcu::signal_threaded<> > rcu_sht;\r
- rcu_sht shtRCU( rcu_buffer_size, SIGUSR2 );\r
# endif\r
#endif // CDSUNIT_USE_URCU\r
\r
#include <cds/urcu/general_buffered.h>
#include <cds/urcu/general_threaded.h>
#include <cds/urcu/signal_buffered.h>
-#include <cds/urcu/signal_threaded.h>
#include <cds/sync/spinlock.h>
#include <cds/opt/hash.h>
typedef cds::urcu::gc< cds::urcu::general_threaded_stripped > rcu_gpt;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cds::urcu::gc< cds::urcu::signal_buffered_stripped > rcu_shb;
- typedef cds::urcu::gc< cds::urcu::signal_threaded_stripped > rcu_sht;
#endif
template <typename Key>
typedef BronsonAVLTreeMap< rcu_gpt, Key, Value, BronsonAVLTreeMap_less > BronsonAVLTreeMap_rcu_gpt_less;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef BronsonAVLTreeMap< rcu_shb, Key, Value, BronsonAVLTreeMap_less > BronsonAVLTreeMap_rcu_shb_less;
- typedef BronsonAVLTreeMap< rcu_sht, Key, Value, BronsonAVLTreeMap_less > BronsonAVLTreeMap_rcu_sht_less;
#endif
struct BronsonAVLTreeMap_cmp_stat: public
cc::bronson_avltree::make_traits<
typedef BronsonAVLTreeMap< rcu_gpt, Key, Value, BronsonAVLTreeMap_cmp_stat > BronsonAVLTreeMap_rcu_gpt_cmp_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef BronsonAVLTreeMap< rcu_shb, Key, Value, BronsonAVLTreeMap_cmp_stat > BronsonAVLTreeMap_rcu_shb_cmp_stat;
- typedef BronsonAVLTreeMap< rcu_sht, Key, Value, BronsonAVLTreeMap_cmp_stat > BronsonAVLTreeMap_rcu_sht_cmp_stat;
#endif
struct BronsonAVLTreeMap_less_pool_simple: public BronsonAVLTreeMap_less
typedef BronsonAVLTreeMap< rcu_gpt, Key, Value, BronsonAVLTreeMap_less_pool_simple > BronsonAVLTreeMap_rcu_gpt_less_pool_simple;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef BronsonAVLTreeMap< rcu_shb, Key, Value, BronsonAVLTreeMap_less_pool_simple > BronsonAVLTreeMap_rcu_shb_less_pool_simple;
- typedef BronsonAVLTreeMap< rcu_sht, Key, Value, BronsonAVLTreeMap_less_pool_simple > BronsonAVLTreeMap_rcu_sht_less_pool_simple;
#endif
struct BronsonAVLTreeMap_less_pool_simple_stat : public BronsonAVLTreeMap_less
{
typedef BronsonAVLTreeMap< rcu_gpt, Key, Value, BronsonAVLTreeMap_less_pool_simple_stat > BronsonAVLTreeMap_rcu_gpt_less_pool_simple_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef BronsonAVLTreeMap< rcu_shb, Key, Value, BronsonAVLTreeMap_less_pool_simple_stat > BronsonAVLTreeMap_rcu_shb_less_pool_simple_stat;
- typedef BronsonAVLTreeMap< rcu_sht, Key, Value, BronsonAVLTreeMap_less_pool_simple_stat > BronsonAVLTreeMap_rcu_sht_less_pool_simple_stat;
#endif
struct BronsonAVLTreeMap_less_pool_lazy: public BronsonAVLTreeMap_less
{
typedef BronsonAVLTreeMap< rcu_gpt, Key, Value, BronsonAVLTreeMap_less_pool_lazy > BronsonAVLTreeMap_rcu_gpt_less_pool_lazy;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef BronsonAVLTreeMap< rcu_shb, Key, Value, BronsonAVLTreeMap_less_pool_lazy > BronsonAVLTreeMap_rcu_shb_less_pool_lazy;
- typedef BronsonAVLTreeMap< rcu_sht, Key, Value, BronsonAVLTreeMap_less_pool_lazy > BronsonAVLTreeMap_rcu_sht_less_pool_lazy;
#endif
struct BronsonAVLTreeMap_less_pool_lazy_stat : public BronsonAVLTreeMap_less
{
typedef BronsonAVLTreeMap< rcu_gpt, Key, Value, BronsonAVLTreeMap_less_pool_lazy_stat > BronsonAVLTreeMap_rcu_gpt_less_pool_lazy_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef BronsonAVLTreeMap< rcu_shb, Key, Value, BronsonAVLTreeMap_less_pool_lazy_stat > BronsonAVLTreeMap_rcu_shb_less_pool_lazy_stat;
- typedef BronsonAVLTreeMap< rcu_sht, Key, Value, BronsonAVLTreeMap_less_pool_lazy_stat > BronsonAVLTreeMap_rcu_sht_less_pool_lazy_stat;
#endif
struct BronsonAVLTreeMap_less_pool_bounded: public BronsonAVLTreeMap_less
{
typedef BronsonAVLTreeMap< rcu_gpt, Key, Value, BronsonAVLTreeMap_less_pool_bounded > BronsonAVLTreeMap_rcu_gpt_less_pool_bounded;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef BronsonAVLTreeMap< rcu_shb, Key, Value, BronsonAVLTreeMap_less_pool_bounded > BronsonAVLTreeMap_rcu_shb_less_pool_bounded;
- typedef BronsonAVLTreeMap< rcu_sht, Key, Value, BronsonAVLTreeMap_less_pool_bounded > BronsonAVLTreeMap_rcu_sht_less_pool_bounded;
#endif
struct BronsonAVLTreeMap_less_pool_bounded_stat : public BronsonAVLTreeMap_less
{
typedef BronsonAVLTreeMap< rcu_gpt, Key, Value, BronsonAVLTreeMap_less_pool_bounded_stat > BronsonAVLTreeMap_rcu_gpt_less_pool_bounded_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef BronsonAVLTreeMap< rcu_shb, Key, Value, BronsonAVLTreeMap_less_pool_bounded_stat > BronsonAVLTreeMap_rcu_shb_less_pool_bounded_stat;
- typedef BronsonAVLTreeMap< rcu_sht, Key, Value, BronsonAVLTreeMap_less_pool_bounded_stat > BronsonAVLTreeMap_rcu_sht_less_pool_bounded_stat;
#endif
};
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
# define CDSSTRESS_BronsonAVLTreeMap_SHRCU( fixture, test_case, key_type, value_type ) \
CDSSTRESS_BronsonAVLTreeMap_case( fixture, test_case, BronsonAVLTreeMap_rcu_shb_less, key_type, value_type ) \
- CDSSTRESS_BronsonAVLTreeMap_case( fixture, test_case, BronsonAVLTreeMap_rcu_sht_less, key_type, value_type ) \
CDSSTRESS_BronsonAVLTreeMap_case( fixture, test_case, BronsonAVLTreeMap_rcu_shb_cmp_stat, key_type, value_type ) \
- CDSSTRESS_BronsonAVLTreeMap_case( fixture, test_case, BronsonAVLTreeMap_rcu_sht_cmp_stat, key_type, value_type ) \
CDSSTRESS_BronsonAVLTreeMap_case( fixture, test_case, BronsonAVLTreeMap_rcu_shb_less_pool_simple, key_type, value_type ) \
- CDSSTRESS_BronsonAVLTreeMap_case( fixture, test_case, BronsonAVLTreeMap_rcu_sht_less_pool_simple, key_type, value_type ) \
CDSSTRESS_BronsonAVLTreeMap_case( fixture, test_case, BronsonAVLTreeMap_rcu_shb_less_pool_simple_stat, key_type, value_type ) \
- CDSSTRESS_BronsonAVLTreeMap_case( fixture, test_case, BronsonAVLTreeMap_rcu_sht_less_pool_simple_stat, key_type, value_type ) \
CDSSTRESS_BronsonAVLTreeMap_case( fixture, test_case, BronsonAVLTreeMap_rcu_shb_less_pool_lazy, key_type, value_type ) \
- CDSSTRESS_BronsonAVLTreeMap_case( fixture, test_case, BronsonAVLTreeMap_rcu_sht_less_pool_lazy, key_type, value_type ) \
CDSSTRESS_BronsonAVLTreeMap_case( fixture, test_case, BronsonAVLTreeMap_rcu_shb_less_pool_lazy_stat, key_type, value_type ) \
- CDSSTRESS_BronsonAVLTreeMap_case( fixture, test_case, BronsonAVLTreeMap_rcu_sht_less_pool_lazy_stat, key_type, value_type )
#else
# define CDSSTRESS_BronsonAVLTreeMap_SHRCU( fixture, test_case, key_type, value_type )
typedef cc::ellen_bintree::internal_node< Key, leaf_node > internal_node;
typedef cc::ellen_bintree::update_desc< leaf_node, internal_node > update_desc;
};
- struct sht {
- typedef cc::ellen_bintree::map_node<rcu_sht, Key, Value> leaf_node;
- typedef cc::ellen_bintree::internal_node< Key, leaf_node > internal_node;
- typedef cc::ellen_bintree::update_desc< leaf_node, internal_node > update_desc;
- };
#endif
};
typedef cds::memory::pool_allocator< typename ellen_bintree_props::shb::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
};
typedef EllenBinTreeMap< rcu_shb, Key, Value, traits_EllenBinTreeMap_shb > EllenBinTreeMap_rcu_shb;
-
- struct traits_EllenBinTreeMap_sht : traits_EllenBinTreeMap {
- typedef cds::memory::pool_allocator< typename ellen_bintree_props::sht::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
- };
- typedef EllenBinTreeMap< rcu_sht, Key, Value, traits_EllenBinTreeMap_sht > EllenBinTreeMap_rcu_sht;
#endif
struct traits_EllenBinTreeMap_yield : public traits_EllenBinTreeMap
typedef cds::memory::pool_allocator< typename ellen_bintree_props::shb::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
};
typedef EllenBinTreeMap< rcu_shb, Key, Value, traits_EllenBinTreeMap_stat_shb > EllenBinTreeMap_rcu_shb_stat;
-
- struct traits_EllenBinTreeMap_stat_sht : public traits_EllenBinTreeMap_stat
- {
- typedef cds::memory::pool_allocator< typename ellen_bintree_props::sht::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
- };
- typedef EllenBinTreeMap< rcu_sht, Key, Value, traits_EllenBinTreeMap_stat_sht > EllenBinTreeMap_rcu_sht_stat;
#endif
};
}
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-# if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL > 0
-# define CDSSTRESS_EllenBinTreeMap_SHRCU_1( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_EllenBinTreeMap_case( fixture, test_case, EllenBinTreeMap_rcu_sht, key_type, value_type ) \
- CDSSTRESS_EllenBinTreeMap_case( fixture, test_case, EllenBinTreeMap_rcu_sht_stat, key_type, value_type ) \
-
-# else
-# define CDSSTRESS_EllenBinTreeMap_SHRCU_1( fixture, test_case, key_type, value_type )
-# endif
-
# define CDSSTRESS_EllenBinTreeMap_SHRCU( fixture, test_case, key_type, value_type ) \
CDSSTRESS_EllenBinTreeMap_case( fixture, test_case, EllenBinTreeMap_rcu_shb, key_type, value_type ) \
CDSSTRESS_EllenBinTreeMap_case( fixture, test_case, EllenBinTreeMap_rcu_shb_stat, key_type, value_type ) \
- CDSSTRESS_EllenBinTreeMap_SHRCU_1( fixture, test_case, key_type, value_type ) \
#else
# define CDSSTRESS_EllenBinTreeMap_SHRCU( fixture, test_case, key_type, value_type )
typedef FeldmanHashMap< rcu_gpt, Key, Value, traits_FeldmanHashMap_stdhash > FeldmanHashMap_rcu_gpt_stdhash;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef FeldmanHashMap< rcu_shb, Key, Value, traits_FeldmanHashMap_stdhash > FeldmanHashMap_rcu_shb_stdhash;
- typedef FeldmanHashMap< rcu_sht, Key, Value, traits_FeldmanHashMap_stdhash > FeldmanHashMap_rcu_sht_stdhash;
#endif
struct traits_FeldmanHashMap_stdhash_stat: traits_FeldmanHashMap_stdhash
typedef FeldmanHashMap< rcu_gpt, Key, Value, traits_FeldmanHashMap_stdhash_stat > FeldmanHashMap_rcu_gpt_stdhash_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef FeldmanHashMap< rcu_shb, Key, Value, traits_FeldmanHashMap_stdhash_stat > FeldmanHashMap_rcu_shb_stdhash_stat;
- typedef FeldmanHashMap< rcu_sht, Key, Value, traits_FeldmanHashMap_stdhash_stat > FeldmanHashMap_rcu_sht_stdhash_stat;
#endif
// CityHash
typedef FeldmanHashMap< rcu_gpt, Key, Value, traits_FeldmanHashMap_city64 > FeldmanHashMap_rcu_gpt_city64;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef FeldmanHashMap< rcu_shb, Key, Value, traits_FeldmanHashMap_city64 > FeldmanHashMap_rcu_shb_city64;
- typedef FeldmanHashMap< rcu_sht, Key, Value, traits_FeldmanHashMap_city64 > FeldmanHashMap_rcu_sht_city64;
#endif
struct traits_FeldmanHashMap_city64_stat : public traits_FeldmanHashMap_city64
typedef FeldmanHashMap< rcu_gpt, Key, Value, traits_FeldmanHashMap_city64_stat > FeldmanHashMap_rcu_gpt_city64_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef FeldmanHashMap< rcu_shb, Key, Value, traits_FeldmanHashMap_city64_stat > FeldmanHashMap_rcu_shb_city64_stat;
- typedef FeldmanHashMap< rcu_sht, Key, Value, traits_FeldmanHashMap_city64_stat > FeldmanHashMap_rcu_sht_city64_stat;
#endif
struct traits_FeldmanHashMap_city128 : public cc::feldman_hashmap::traits
typedef FeldmanHashMap< rcu_gpt, Key, Value, traits_FeldmanHashMap_city128 > FeldmanHashMap_rcu_gpt_city128;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef FeldmanHashMap< rcu_shb, Key, Value, traits_FeldmanHashMap_city128 > FeldmanHashMap_rcu_shb_city128;
- typedef FeldmanHashMap< rcu_sht, Key, Value, traits_FeldmanHashMap_city128 > FeldmanHashMap_rcu_sht_city128;
#endif
struct traits_FeldmanHashMap_city128_stat : public traits_FeldmanHashMap_city128
typedef FeldmanHashMap< rcu_gpt, Key, Value, traits_FeldmanHashMap_city128_stat > FeldmanHashMap_rcu_gpt_city128_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef FeldmanHashMap< rcu_shb, Key, Value, traits_FeldmanHashMap_city128_stat > FeldmanHashMap_rcu_shb_city128_stat;
- typedef FeldmanHashMap< rcu_sht, Key, Value, traits_FeldmanHashMap_city128_stat > FeldmanHashMap_rcu_sht_city128_stat;
#endif
#endif // CDS_BUILD_BITS == 64
typedef FeldmanHashMap< rcu_gpt, Key, Value, traits_FeldmanHashMap_fixed > FeldmanHashMap_rcu_gpt_fixed;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef FeldmanHashMap< rcu_shb, Key, Value, traits_FeldmanHashMap_fixed > FeldmanHashMap_rcu_shb_fixed;
- typedef FeldmanHashMap< rcu_sht, Key, Value, traits_FeldmanHashMap_fixed > FeldmanHashMap_rcu_sht_fixed;
#endif
struct traits_FeldmanHashMap_fixed_stat : public traits_FeldmanHashMap_fixed
typedef FeldmanHashMap< rcu_gpt, Key, Value, traits_FeldmanHashMap_fixed_stat > FeldmanHashMap_rcu_gpt_fixed_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef FeldmanHashMap< rcu_shb, Key, Value, traits_FeldmanHashMap_fixed_stat > FeldmanHashMap_rcu_shb_fixed_stat;
- typedef FeldmanHashMap< rcu_sht, Key, Value, traits_FeldmanHashMap_fixed_stat > FeldmanHashMap_rcu_sht_fixed_stat;
#endif
};
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
# define CDSSTRESS_FeldmanHashMap_fixed_SHRCU( fixture, test_case, key_type, value_type ) \
CDSSTRESS_FeldmanHashMap_case( fixture, test_case, FeldmanHashMap_rcu_shb_fixed, key_type, value_type ) \
- CDSSTRESS_FeldmanHashMap_case( fixture, test_case, FeldmanHashMap_rcu_sht_fixed, key_type, value_type ) \
CDSSTRESS_FeldmanHashMap_case( fixture, test_case, FeldmanHashMap_rcu_shb_fixed_stat, key_type, value_type ) \
- CDSSTRESS_FeldmanHashMap_case( fixture, test_case, FeldmanHashMap_rcu_sht_fixed_stat, key_type, value_type ) \
# define CDSSTRESS_FeldmanHashMap_stdhash_SHRCU( fixture, test_case, key_type, value_type ) \
CDSSTRESS_FeldmanHashMap_case( fixture, test_case, FeldmanHashMap_rcu_shb_stdhash, key_type, value_type ) \
- CDSSTRESS_FeldmanHashMap_case( fixture, test_case, FeldmanHashMap_rcu_sht_stdhash, key_type, value_type ) \
CDSSTRESS_FeldmanHashMap_case( fixture, test_case, FeldmanHashMap_rcu_shb_stdhash_stat, key_type, value_type ) \
- CDSSTRESS_FeldmanHashMap_case( fixture, test_case, FeldmanHashMap_rcu_sht_stdhash_stat, key_type, value_type ) \
# if CDS_BUILD_BITS == 64
# define CDSSTRESS_FeldmanHashMap_city64_SHRCU( fixture, test_case, key_type, value_type ) \
CDSSTRESS_FeldmanHashMap_case( fixture, test_case, FeldmanHashMap_rcu_shb_city64, key_type, value_type ) \
- CDSSTRESS_FeldmanHashMap_case( fixture, test_case, FeldmanHashMap_rcu_sht_city64, key_type, value_type ) \
CDSSTRESS_FeldmanHashMap_case( fixture, test_case, FeldmanHashMap_rcu_shb_city64_stat, key_type, value_type ) \
- CDSSTRESS_FeldmanHashMap_case( fixture, test_case, FeldmanHashMap_rcu_sht_city64_stat, key_type, value_type ) \
# define CDSSTRESS_FeldmanHashMap_city128_SHRCU( fixture, test_case, key_type, value_type ) \
CDSSTRESS_FeldmanHashMap_case( fixture, test_case, FeldmanHashMap_rcu_shb_city64, key_type, value_type ) \
- CDSSTRESS_FeldmanHashMap_case( fixture, test_case, FeldmanHashMap_rcu_sht_city64, key_type, value_type ) \
CDSSTRESS_FeldmanHashMap_case( fixture, test_case, FeldmanHashMap_rcu_shb_city64_stat, key_type, value_type ) \
- CDSSTRESS_FeldmanHashMap_case( fixture, test_case, FeldmanHashMap_rcu_sht_city64_stat, key_type, value_type ) \
# else
# define CDSSTRESS_FeldmanHashMap_city64_SHRCU( fixture, test_case, key_type, value_type )
typedef cc::LazyKVList< rcu_gpt, Key, Value, traits_LazyList_cmp > LazyList_RCU_GPT_cmp;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::LazyKVList< rcu_shb, Key, Value, traits_LazyList_cmp > LazyList_RCU_SHB_cmp;
- typedef cc::LazyKVList< rcu_sht, Key, Value, traits_LazyList_cmp > LazyList_RCU_SHT_cmp;
#endif
struct traits_LazyList_cmp_stat: public traits_LazyList_cmp
typedef cc::LazyKVList< rcu_gpt, Key, Value, traits_LazyList_cmp_stat > LazyList_RCU_GPT_cmp_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::LazyKVList< rcu_shb, Key, Value, traits_LazyList_cmp_stat > LazyList_RCU_SHB_cmp_stat;
- typedef cc::LazyKVList< rcu_sht, Key, Value, traits_LazyList_cmp_stat > LazyList_RCU_SHT_cmp_stat;
#endif
struct traits_LazyList_unord :
typedef cc::LazyKVList< rcu_gpt, Key, Value, traits_LazyList_cmp_seqcst > LazyList_RCU_GPT_cmp_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::LazyKVList< rcu_shb, Key, Value, traits_LazyList_cmp_seqcst > LazyList_RCU_SHB_cmp_seqcst;
- typedef cc::LazyKVList< rcu_sht, Key, Value, traits_LazyList_cmp_seqcst > LazyList_RCU_SHT_cmp_seqcst;
#endif
struct traits_LazyList_less :
typedef cc::LazyKVList< rcu_gpt, Key, Value, traits_LazyList_less > LazyList_RCU_GPT_less;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::LazyKVList< rcu_shb, Key, Value, traits_LazyList_less > LazyList_RCU_SHB_less;
- typedef cc::LazyKVList< rcu_sht, Key, Value, traits_LazyList_less > LazyList_RCU_SHT_less;
#endif
struct traits_LazyList_less_stat: public traits_LazyList_less
typedef cc::LazyKVList< rcu_gpt, Key, Value, traits_LazyList_less_stat > LazyList_RCU_GPT_less_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::LazyKVList< rcu_shb, Key, Value, traits_LazyList_less_stat > LazyList_RCU_SHB_less_stat;
- typedef cc::LazyKVList< rcu_sht, Key, Value, traits_LazyList_less_stat > LazyList_RCU_SHT_less_stat;
#endif
struct traits_LazyList_less_seqcst :
typedef cc::LazyKVList< rcu_gpt, Key, Value, traits_LazyList_less_seqcst > LazyList_RCU_GPT_less_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::LazyKVList< rcu_shb, Key, Value, traits_LazyList_less_seqcst > LazyList_RCU_SHB_less_seqcst;
- typedef cc::LazyKVList< rcu_sht, Key, Value, traits_LazyList_less_seqcst > LazyList_RCU_SHT_less_seqcst;
#endif
};
typedef MichaelHashMap< rcu_gpt, typename ml::MichaelList_RCU_GPT_cmp, traits_MichaelMap_hash > MichaelMap_RCU_GPT_cmp;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashMap< rcu_shb, typename ml::MichaelList_RCU_SHB_cmp, traits_MichaelMap_hash > MichaelMap_RCU_SHB_cmp;
- typedef MichaelHashMap< rcu_sht, typename ml::MichaelList_RCU_SHT_cmp, traits_MichaelMap_hash > MichaelMap_RCU_SHT_cmp;
#endif
typedef MichaelHashMap< cds::gc::HP, typename ml::MichaelList_HP_cmp_stat, traits_MichaelMap_hash > MichaelMap_HP_cmp_stat;
typedef MichaelHashMap< rcu_gpt, typename ml::MichaelList_RCU_GPT_cmp_stat, traits_MichaelMap_hash > MichaelMap_RCU_GPT_cmp_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashMap< rcu_shb, typename ml::MichaelList_RCU_SHB_cmp_stat, traits_MichaelMap_hash > MichaelMap_RCU_SHB_cmp_stat;
- typedef MichaelHashMap< rcu_sht, typename ml::MichaelList_RCU_SHT_cmp_stat, traits_MichaelMap_hash > MichaelMap_RCU_SHT_cmp_stat;
#endif
typedef MichaelHashMap< cds::gc::HP, typename ml::MichaelList_HP_less, traits_MichaelMap_hash > MichaelMap_HP_less;
typedef MichaelHashMap< rcu_gpt, typename ml::MichaelList_RCU_GPT_less, traits_MichaelMap_hash > MichaelMap_RCU_GPT_less;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashMap< rcu_shb, typename ml::MichaelList_RCU_SHB_less, traits_MichaelMap_hash > MichaelMap_RCU_SHB_less;
- typedef MichaelHashMap< rcu_sht, typename ml::MichaelList_RCU_SHT_less, traits_MichaelMap_hash > MichaelMap_RCU_SHT_less;
#endif
typedef MichaelHashMap< cds::gc::HP, typename ml::MichaelList_HP_less_stat, traits_MichaelMap_hash > MichaelMap_HP_less_stat;
typedef MichaelHashMap< rcu_gpt, typename ml::MichaelList_RCU_GPT_less_stat, traits_MichaelMap_hash > MichaelMap_RCU_GPT_less_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashMap< rcu_shb, typename ml::MichaelList_RCU_SHB_less_stat, traits_MichaelMap_hash > MichaelMap_RCU_SHB_less_stat;
- typedef MichaelHashMap< rcu_sht, typename ml::MichaelList_RCU_SHT_less_stat, traits_MichaelMap_hash > MichaelMap_RCU_SHT_less_stat;
#endif
typedef MichaelHashMap< cds::gc::HP, typename ml::MichaelList_HP_cmp_seqcst, traits_MichaelMap_hash > MichaelMap_HP_cmp_seqcst;
typedef MichaelHashMap< rcu_gpt, typename ml::MichaelList_RCU_GPT_cmp_seqcst, traits_MichaelMap_hash > MichaelMap_RCU_GPT_cmp_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashMap< rcu_shb, typename ml::MichaelList_RCU_SHB_cmp_seqcst, traits_MichaelMap_hash > MichaelMap_RCU_SHB_cmp_seqcst;
- typedef MichaelHashMap< rcu_sht, typename ml::MichaelList_RCU_SHT_cmp_seqcst, traits_MichaelMap_hash > MichaelMap_RCU_SHT_cmp_seqcst;
#endif
typedef MichaelHashMap< cds::gc::HP, typename ml::MichaelList_HP_less_seqcst, traits_MichaelMap_hash > MichaelMap_HP_less_seqcst;
typedef MichaelHashMap< rcu_gpt, typename ml::MichaelList_RCU_GPT_less_seqcst, traits_MichaelMap_hash > MichaelMap_RCU_GPT_less_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashMap< rcu_shb, typename ml::MichaelList_RCU_SHB_less_seqcst, traits_MichaelMap_hash > MichaelMap_RCU_SHB_less_seqcst;
- typedef MichaelHashMap< rcu_sht, typename ml::MichaelList_RCU_SHT_less_seqcst, traits_MichaelMap_hash > MichaelMap_RCU_SHT_less_seqcst;
#endif
typedef MichaelHashMap< rcu_gpt, typename ll::LazyList_RCU_GPT_cmp, traits_MichaelMap_hash > MichaelMap_Lazy_RCU_GPT_cmp;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashMap< rcu_shb, typename ll::LazyList_RCU_SHB_cmp, traits_MichaelMap_hash > MichaelMap_Lazy_RCU_SHB_cmp;
- typedef MichaelHashMap< rcu_sht, typename ll::LazyList_RCU_SHT_cmp, traits_MichaelMap_hash > MichaelMap_Lazy_RCU_SHT_cmp;
#endif
typedef MichaelHashMap< cds::gc::HP, typename ll::LazyList_HP_cmp_stat, traits_MichaelMap_hash > MichaelMap_Lazy_HP_cmp_stat;
typedef MichaelHashMap< rcu_gpt, typename ll::LazyList_RCU_GPT_cmp_stat, traits_MichaelMap_hash > MichaelMap_Lazy_RCU_GPT_cmp_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashMap< rcu_shb, typename ll::LazyList_RCU_SHB_cmp_stat, traits_MichaelMap_hash > MichaelMap_Lazy_RCU_SHB_cmp_stat;
- typedef MichaelHashMap< rcu_sht, typename ll::LazyList_RCU_SHT_cmp_stat, traits_MichaelMap_hash > MichaelMap_Lazy_RCU_SHT_cmp_stat;
#endif
typedef MichaelHashMap< cds::gc::nogc, typename ll::LazyList_NOGC_unord, traits_MichaelMap_hash > MichaelMap_Lazy_NOGC_unord;
typedef MichaelHashMap< rcu_gpt, typename ll::LazyList_RCU_GPT_less, traits_MichaelMap_hash > MichaelMap_Lazy_RCU_GPT_less;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashMap< rcu_shb, typename ll::LazyList_RCU_SHB_less, traits_MichaelMap_hash > MichaelMap_Lazy_RCU_SHB_less;
- typedef MichaelHashMap< rcu_sht, typename ll::LazyList_RCU_SHT_less, traits_MichaelMap_hash > MichaelMap_Lazy_RCU_SHT_less;
#endif
typedef MichaelHashMap< cds::gc::HP, typename ll::LazyList_HP_less_stat, traits_MichaelMap_hash > MichaelMap_Lazy_HP_less_stat;
typedef MichaelHashMap< rcu_gpt, typename ll::LazyList_RCU_GPT_less_stat, traits_MichaelMap_hash > MichaelMap_Lazy_RCU_GPT_less_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashMap< rcu_shb, typename ll::LazyList_RCU_SHB_less_stat, traits_MichaelMap_hash > MichaelMap_Lazy_RCU_SHB_less_stat;
- typedef MichaelHashMap< rcu_sht, typename ll::LazyList_RCU_SHT_less_stat, traits_MichaelMap_hash > MichaelMap_Lazy_RCU_SHT_less_stat;
#endif
typedef MichaelHashMap< cds::gc::HP, typename ll::LazyList_HP_cmp_seqcst, traits_MichaelMap_hash > MichaelMap_Lazy_HP_cmp_seqcst;
typedef MichaelHashMap< rcu_gpt, typename ll::LazyList_RCU_GPT_cmp_seqcst, traits_MichaelMap_hash > MichaelMap_Lazy_RCU_GPT_cmp_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashMap< rcu_shb, typename ll::LazyList_RCU_SHB_cmp_seqcst, traits_MichaelMap_hash > MichaelMap_Lazy_RCU_SHB_cmp_seqcst;
- typedef MichaelHashMap< rcu_sht, typename ll::LazyList_RCU_SHT_cmp_seqcst, traits_MichaelMap_hash > MichaelMap_Lazy_RCU_SHT_cmp_seqcst;
#endif
typedef MichaelHashMap< cds::gc::HP, typename ll::LazyList_HP_less_seqcst, traits_MichaelMap_hash > MichaelMap_Lazy_HP_less_seqcst;
typedef MichaelHashMap< rcu_gpt, typename ll::LazyList_RCU_GPT_less_seqcst, traits_MichaelMap_hash > MichaelMap_Lazy_RCU_GPT_less_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashMap< rcu_shb, typename ll::LazyList_RCU_SHB_less_seqcst, traits_MichaelMap_hash > MichaelMap_Lazy_RCU_SHB_less_seqcst;
- typedef MichaelHashMap< rcu_sht, typename ll::LazyList_RCU_SHT_less_seqcst, traits_MichaelMap_hash > MichaelMap_Lazy_RCU_SHT_less_seqcst;
#endif
typedef cc::MichaelKVList< rcu_gpt, Key, Value, traits_MichaelList_cmp > MichaelList_RCU_GPT_cmp;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::MichaelKVList< rcu_shb, Key, Value, traits_MichaelList_cmp > MichaelList_RCU_SHB_cmp;
- typedef cc::MichaelKVList< rcu_sht, Key, Value, traits_MichaelList_cmp > MichaelList_RCU_SHT_cmp;
#endif
struct traits_MichaelList_cmp_stat : public traits_MichaelList_cmp
typedef cc::MichaelKVList< rcu_gpt, Key, Value, traits_MichaelList_cmp_stat > MichaelList_RCU_GPT_cmp_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::MichaelKVList< rcu_shb, Key, Value, traits_MichaelList_cmp_stat > MichaelList_RCU_SHB_cmp_stat;
- typedef cc::MichaelKVList< rcu_sht, Key, Value, traits_MichaelList_cmp_stat > MichaelList_RCU_SHT_cmp_stat;
#endif
struct traits_MichaelList_cmp_seqcst :
typedef cc::MichaelKVList< rcu_gpt, Key, Value, traits_MichaelList_cmp_seqcst > MichaelList_RCU_GPT_cmp_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::MichaelKVList< rcu_shb, Key, Value, traits_MichaelList_cmp_seqcst > MichaelList_RCU_SHB_cmp_seqcst;
- typedef cc::MichaelKVList< rcu_sht, Key, Value, traits_MichaelList_cmp_seqcst > MichaelList_RCU_SHT_cmp_seqcst;
#endif
struct traits_MichaelList_less :
typedef cc::MichaelKVList< rcu_gpt, Key, Value, traits_MichaelList_less > MichaelList_RCU_GPT_less;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::MichaelKVList< rcu_shb, Key, Value, traits_MichaelList_less > MichaelList_RCU_SHB_less;
- typedef cc::MichaelKVList< rcu_sht, Key, Value, traits_MichaelList_less > MichaelList_RCU_SHT_less;
#endif
struct traits_MichaelList_less_stat: public traits_MichaelList_less
typedef cc::MichaelKVList< rcu_gpt, Key, Value, traits_MichaelList_less_stat > MichaelList_RCU_GPT_less_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::MichaelKVList< rcu_shb, Key, Value, traits_MichaelList_less_stat > MichaelList_RCU_SHB_less_stat;
- typedef cc::MichaelKVList< rcu_sht, Key, Value, traits_MichaelList_less_stat > MichaelList_RCU_SHT_less_stat;
#endif
struct traits_MichaelList_less_seqcst :
typedef cc::MichaelKVList< rcu_gpt, Key, Value, traits_MichaelList_less_seqcst > MichaelList_RCU_GPT_less_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::MichaelKVList< rcu_shb, Key, Value, traits_MichaelList_less_seqcst > MichaelList_RCU_SHB_less_seqcst;
- typedef cc::MichaelKVList< rcu_sht, Key, Value, traits_MichaelList_less_seqcst > MichaelList_RCU_SHT_less_seqcst;
#endif
};
typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_pascal > SkipListMap_rcu_gpt_less_pascal;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_pascal > SkipListMap_rcu_shb_less_pascal;
- typedef SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_less_pascal > SkipListMap_rcu_sht_less_pascal;
#endif
class traits_SkipListMap_less_pascal_seqcst: public cc::skip_list::make_traits <
typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_pascal_seqcst > SkipListMap_rcu_gpt_less_pascal_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_pascal_seqcst > SkipListMap_rcu_shb_less_pascal_seqcst;
- typedef SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_less_pascal_seqcst > SkipListMap_rcu_sht_less_pascal_seqcst;
#endif
class traits_SkipListMap_less_pascal_stat: public cc::skip_list::make_traits <
typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_pascal_stat > SkipListMap_rcu_gpt_less_pascal_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_pascal_stat > SkipListMap_rcu_shb_less_pascal_stat;
- typedef SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_less_pascal_stat > SkipListMap_rcu_sht_less_pascal_stat;
#endif
class traits_SkipListMap_cmp_pascal: public cc::skip_list::make_traits <
typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_cmp_pascal > SkipListMap_rcu_gpt_cmp_pascal;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_cmp_pascal > SkipListMap_rcu_shb_cmp_pascal;
- typedef SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_cmp_pascal > SkipListMap_rcu_sht_cmp_pascal;
#endif
class traits_SkipListMap_cmp_pascal_stat: public cc::skip_list::make_traits <
typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_cmp_pascal_stat > SkipListMap_rcu_gpt_cmp_pascal_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_cmp_pascal_stat > SkipListMap_rcu_shb_cmp_pascal_stat;
- typedef SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_cmp_pascal_stat > SkipListMap_rcu_sht_cmp_pascal_stat;
#endif
class traits_SkipListMap_less_xorshift: public cc::skip_list::make_traits <
typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_xorshift > SkipListMap_rcu_gpt_less_xorshift;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_xorshift > SkipListMap_rcu_shb_less_xorshift;
- typedef SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_less_xorshift > SkipListMap_rcu_sht_less_xorshift;
#endif
class traits_SkipListMap_less_xorshift_stat: public cc::skip_list::make_traits <
typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_less_xorshift_stat > SkipListMap_rcu_gpt_less_xorshift_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_less_xorshift_stat > SkipListMap_rcu_shb_less_xorshift_stat;
- typedef SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_less_xorshift_stat > SkipListMap_rcu_sht_less_xorshift_stat;
#endif
class traits_SkipListMap_cmp_xorshift: public cc::skip_list::make_traits <
typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_cmp_xorshift > SkipListMap_rcu_gpt_cmp_xorshift;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_cmp_xorshift > SkipListMap_rcu_shb_cmp_xorshift;
- typedef SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_cmp_xorshift > SkipListMap_rcu_sht_cmp_xorshift;
#endif
class traits_SkipListMap_cmp_xorshift_stat: public cc::skip_list::make_traits <
typedef SkipListMap< rcu_gpt, Key, Value, traits_SkipListMap_cmp_xorshift_stat > SkipListMap_rcu_gpt_cmp_xorshift_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SkipListMap< rcu_shb, Key, Value, traits_SkipListMap_cmp_xorshift_stat > SkipListMap_rcu_shb_cmp_xorshift_stat;
- typedef SkipListMap< rcu_sht, Key, Value, traits_SkipListMap_cmp_xorshift_stat > SkipListMap_rcu_sht_cmp_xorshift_stat;
#endif
};
#if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL > 1
# define CDSSTRESS_SkipListMap_SHRCU_2( fixture, test_case, key_type, value_type ) \
CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_less_pascal_seqcst, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_sht_less_pascal_seqcst, key_type, value_type ) \
#else
# define CDSSTRESS_SkipListMap_SHRCU_2( fixture, test_case, key_type, value_type )
#if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL == 1
# define CDSSTRESS_SkipListMap_SHRCU_1( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_sht_less_pascal, key_type, value_type ) \
CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_less_pascal_stat, key_type, value_type ) \
CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_cmp_pascal, key_type, value_type ) \
CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_cmp_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_sht_less_xorshift, key_type, value_type ) \
CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_less_xorshift_stat, key_type, value_type ) \
CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_cmp_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_sht_cmp_xorshift_stat, key_type, value_type ) \
#else
# define CDSSTRESS_SkipListMap_SHRCU_1( fixture, test_case, key_type, value_type )
# define CDSSTRESS_SkipListMap_SHRCU( fixture, test_case, key_type, value_type ) \
CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_less_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_sht_less_pascal_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_sht_cmp_pascal, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_sht_cmp_pascal_stat, key_type, value_type ) \
CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_less_xorshift, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_sht_less_xorshift_stat, key_type, value_type ) \
- CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_sht_cmp_xorshift, key_type, value_type ) \
CDSSTRESS_SkipListMap_case( fixture, test_case, SkipListMap_rcu_shb_cmp_xorshift_stat, key_type, value_type ) \
CDSSTRESS_SkipListMap_SHRCU_1( fixture, test_case, key_type, value_type ) \
CDSSTRESS_SkipListMap_SHRCU_2( fixture, test_case, key_type, value_type ) \
typedef SplitListMap< rcu_gpt, Key, Value, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_GPT_dyn_cmp;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListMap< rcu_shb, Key, Value, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_SHB_dyn_cmp;
- typedef SplitListMap< rcu_sht, Key, Value, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_SHT_dyn_cmp;
#endif
struct traits_SplitList_Michael_dyn_cmp_swar: public traits_SplitList_Michael_dyn_cmp
typedef SplitListMap< rcu_gpt, Key, Value, traits_SplitList_Michael_dyn_cmp_swar > SplitList_Michael_RCU_GPT_dyn_cmp_swar;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListMap< rcu_shb, Key, Value, traits_SplitList_Michael_dyn_cmp_swar > SplitList_Michael_RCU_SHB_dyn_cmp_swar;
- typedef SplitListMap< rcu_sht, Key, Value, traits_SplitList_Michael_dyn_cmp_swar > SplitList_Michael_RCU_SHT_dyn_cmp_swar;
#endif
struct traits_SplitList_Michael_dyn_cmp_stat : public traits_SplitList_Michael_dyn_cmp
typedef SplitListMap< rcu_gpt, Key, Value, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_GPT_dyn_cmp_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListMap< rcu_shb, Key, Value, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_SHB_dyn_cmp_stat;
- typedef SplitListMap< rcu_sht, Key, Value, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_SHT_dyn_cmp_stat;
#endif
struct traits_SplitList_Michael_dyn_cmp_seqcst: public cc::split_list::make_traits<
typedef SplitListMap< rcu_gpt, Key, Value, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_GPT_dyn_cmp_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListMap< rcu_shb, Key, Value, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_SHB_dyn_cmp_seqcst;
- typedef SplitListMap< rcu_sht, Key, Value, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_SHT_dyn_cmp_seqcst;
#endif
struct traits_SplitList_Michael_st_cmp: public cc::split_list::make_traits<
typedef SplitListMap< rcu_gpt, Key, Value, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_GPT_st_cmp;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListMap< rcu_shb, Key, Value, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_SHB_st_cmp;
- typedef SplitListMap< rcu_sht, Key, Value, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_SHT_st_cmp;
#endif
//HP + less
typedef SplitListMap< rcu_gpt, Key, Value, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_GPT_dyn_less;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListMap< rcu_shb, Key, Value, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_SHB_dyn_less;
- typedef SplitListMap< rcu_sht, Key, Value, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_SHT_dyn_less;
#endif
typedef SplitListMap< rcu_gpt, Key, Value, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_GPT_st_less;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListMap< rcu_shb, Key, Value, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_SHB_st_less;
- typedef SplitListMap< rcu_sht, Key, Value, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_SHT_st_less;
#endif
struct traits_SplitList_Michael_st_less_stat : traits_SplitList_Michael_st_less
typedef SplitListMap< rcu_gpt, Key, Value, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_GPT_st_less_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListMap< rcu_shb, Key, Value, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_SHB_st_less_stat;
- typedef SplitListMap< rcu_sht, Key, Value, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_SHT_st_less_stat;
#endif
typedef SplitListMap< rcu_gpt, Key, Value, SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_GPT_dyn_cmp;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListMap< rcu_shb, Key, Value, SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_SHB_dyn_cmp;
- typedef SplitListMap< rcu_sht, Key, Value, SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_SHT_dyn_cmp;
#endif
struct SplitList_Lazy_dyn_cmp_stat : public SplitList_Lazy_dyn_cmp
typedef SplitListMap< rcu_gpt, Key, Value, SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_RCU_GPT_dyn_cmp_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListMap< rcu_shb, Key, Value, SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_RCU_SHB_dyn_cmp_stat;
- typedef SplitListMap< rcu_sht, Key, Value, SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_RCU_SHT_dyn_cmp_stat;
#endif
struct SplitList_Lazy_dyn_cmp_seqcst :
typedef SplitListMap< rcu_gpt, Key, Value, SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_GPT_dyn_cmp_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListMap< rcu_shb, Key, Value, SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_SHB_dyn_cmp_seqcst;
- typedef SplitListMap< rcu_sht, Key, Value, SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_SHT_dyn_cmp_seqcst;
#endif
struct SplitList_Lazy_st_cmp :
typedef SplitListMap< rcu_gpt, Key, Value, SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_GPT_st_cmp;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListMap< rcu_shb, Key, Value, SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_SHB_st_cmp;
- typedef SplitListMap< rcu_sht, Key, Value, SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_SHT_st_cmp;
#endif
typedef SplitListMap< rcu_gpt, Key, Value, SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_GPT_dyn_less;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListMap< rcu_shb, Key, Value, SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_SHB_dyn_less;
- typedef SplitListMap< rcu_sht, Key, Value, SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_SHT_dyn_less;
#endif
struct SplitList_Lazy_st_less :
typedef SplitListMap< rcu_gpt, Key, Value, SplitList_Lazy_st_less > SplitList_Lazy_RCU_GPT_st_less;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListMap< rcu_shb, Key, Value, SplitList_Lazy_st_less > SplitList_Lazy_RCU_SHB_st_less;
- typedef SplitListMap< rcu_sht, Key, Value, SplitList_Lazy_st_less > SplitList_Lazy_RCU_SHT_st_less;
#endif
struct SplitList_Lazy_st_less_stat : public SplitList_Lazy_st_less
typedef SplitListMap< rcu_gpt, Key, Value, SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_GPT_st_less_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListMap< rcu_shb, Key, Value, SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_SHB_st_less_stat;
- typedef SplitListMap< rcu_sht, Key, Value, SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_SHT_st_less_stat;
#endif
CDSSTRESS_PriorityQueue( pqueue_pop, EllenBinTree_RCU_shb_max_stat )
CDSSTRESS_PriorityQueue( pqueue_pop, EllenBinTree_RCU_shb_min )
CDSSTRESS_PriorityQueue( pqueue_pop, EllenBinTree_RCU_shb_min_stat )
- CDSSTRESS_PriorityQueue( pqueue_pop, EllenBinTree_RCU_sht_max )
- CDSSTRESS_PriorityQueue( pqueue_pop, EllenBinTree_RCU_sht_max_stat )
- CDSSTRESS_PriorityQueue( pqueue_pop, EllenBinTree_RCU_sht_min )
- CDSSTRESS_PriorityQueue( pqueue_pop, EllenBinTree_RCU_sht_min_stat )
#endif
CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_HP_max )
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_RCU_shb_max )
CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_RCU_shb_min )
- CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_RCU_sht_max )
- CDSSTRESS_PriorityQueue( pqueue_pop, SkipList_RCU_sht_min )
#endif
CDSSTRESS_PriorityQueue( pqueue_pop, StdPQueue_vector_spin )
#include <cds/urcu/general_buffered.h>
#include <cds/urcu/general_threaded.h>
#include <cds/urcu/signal_buffered.h>
-#include <cds/urcu/signal_threaded.h>
#include <cds/container/mspriority_queue.h>
#include <cds/container/fcpriority_queue.h>
typedef cds::urcu::gc< cds::urcu::general_threaded<> > rcu_gpt;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cds::urcu::gc< cds::urcu::signal_buffered<> > rcu_shb;
- typedef cds::urcu::gc< cds::urcu::signal_threaded<> > rcu_sht;
#endif
typedef details::EllenBinTreePQueue< rcu_gpt, typename Value::key_type, Value, traits_EllenBinTree_max > EllenBinTree_RCU_gpt_max;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef details::EllenBinTreePQueue< rcu_shb, typename Value::key_type, Value, traits_EllenBinTree_max > EllenBinTree_RCU_shb_max;
- typedef details::EllenBinTreePQueue< rcu_sht, typename Value::key_type, Value, traits_EllenBinTree_max > EllenBinTree_RCU_sht_max;
#endif
struct traits_EllenBinTree_max_stat :
typedef details::EllenBinTreePQueue< rcu_gpt, typename Value::key_type, Value, traits_EllenBinTree_max_stat > EllenBinTree_RCU_gpt_max_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef details::EllenBinTreePQueue< rcu_shb, typename Value::key_type, Value, traits_EllenBinTree_max_stat > EllenBinTree_RCU_shb_max_stat;
- typedef details::EllenBinTreePQueue< rcu_sht, typename Value::key_type, Value, traits_EllenBinTree_max_stat > EllenBinTree_RCU_sht_max_stat;
#endif
struct traits_EllenBinTree_min :
typedef details::EllenBinTreePQueue< rcu_gpt, typename Value::key_type, Value, traits_EllenBinTree_min, false > EllenBinTree_RCU_gpt_min;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef details::EllenBinTreePQueue< rcu_shb, typename Value::key_type, Value, traits_EllenBinTree_min, false > EllenBinTree_RCU_shb_min;
- typedef details::EllenBinTreePQueue< rcu_sht, typename Value::key_type, Value, traits_EllenBinTree_min, false > EllenBinTree_RCU_sht_min;
#endif
struct traits_EllenBinTree_min_stat :
typedef details::EllenBinTreePQueue< rcu_gpt, typename Value::key_type, Value, traits_EllenBinTree_min_stat, false > EllenBinTree_RCU_gpt_min_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef details::EllenBinTreePQueue< rcu_shb, typename Value::key_type, Value, traits_EllenBinTree_min_stat, false > EllenBinTree_RCU_shb_min_stat;
- typedef details::EllenBinTreePQueue< rcu_sht, typename Value::key_type, Value, traits_EllenBinTree_min_stat, false > EllenBinTree_RCU_sht_min_stat;
#endif
// Priority queue based on SkipListSet
typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_max > SkipList_RCU_gpt_max;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_max > SkipList_RCU_shb_max;
- typedef details::SkipListPQueue< rcu_sht, Value, traits_SkipList_max > SkipList_RCU_sht_max;
#endif
struct traits_SkipList_max_stat :
typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_max_stat > SkipList_RCU_gpt_max_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_max_stat > SkipList_RCU_shb_max_stat;
- typedef details::SkipListPQueue< rcu_sht, Value, traits_SkipList_max_stat > SkipList_RCU_sht_max_stat;
#endif
struct traits_SkipList_min :
typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_min, false > SkipList_RCU_gpt_min;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_min, false > SkipList_RCU_shb_min;
- typedef details::SkipListPQueue< rcu_sht, Value, traits_SkipList_min, false > SkipList_RCU_sht_min;
#endif
struct traits_SkipList_min_stat :
typedef details::SkipListPQueue< rcu_gpt, Value, traits_SkipList_min_stat, false > SkipList_RCU_gpt_min_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef details::SkipListPQueue< rcu_shb, Value, traits_SkipList_min_stat, false > SkipList_RCU_shb_min_stat;
- typedef details::SkipListPQueue< rcu_sht, Value, traits_SkipList_min_stat, false > SkipList_RCU_sht_min_stat;
#endif
CDSSTRESS_PriorityQueue( pqueue_push, EllenBinTree_RCU_shb_max_stat )
CDSSTRESS_PriorityQueue( pqueue_push, EllenBinTree_RCU_shb_min )
CDSSTRESS_PriorityQueue( pqueue_push, EllenBinTree_RCU_shb_min_stat )
- CDSSTRESS_PriorityQueue( pqueue_push, EllenBinTree_RCU_sht_max )
- CDSSTRESS_PriorityQueue( pqueue_push, EllenBinTree_RCU_sht_max_stat )
- CDSSTRESS_PriorityQueue( pqueue_push, EllenBinTree_RCU_sht_min )
- CDSSTRESS_PriorityQueue( pqueue_push, EllenBinTree_RCU_sht_min_stat )
#endif
CDSSTRESS_PriorityQueue( pqueue_push, SkipList_HP_max )
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
CDSSTRESS_PriorityQueue( pqueue_push, SkipList_RCU_shb_max )
CDSSTRESS_PriorityQueue( pqueue_push, SkipList_RCU_shb_min )
- CDSSTRESS_PriorityQueue( pqueue_push, SkipList_RCU_sht_max )
- CDSSTRESS_PriorityQueue( pqueue_push, SkipList_RCU_sht_min )
#endif
CDSSTRESS_PriorityQueue( pqueue_push, StdPQueue_vector_spin )
CDSSTRESS_PriorityQueue( pqueue_push_pop, EllenBinTree_RCU_shb_max_stat )
CDSSTRESS_PriorityQueue( pqueue_push_pop, EllenBinTree_RCU_shb_min )
CDSSTRESS_PriorityQueue( pqueue_push_pop, EllenBinTree_RCU_shb_min_stat )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, EllenBinTree_RCU_sht_max )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, EllenBinTree_RCU_sht_max_stat )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, EllenBinTree_RCU_sht_min )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, EllenBinTree_RCU_sht_min_stat )
#endif
CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_HP_max )
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_RCU_shb_max )
CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_RCU_shb_min )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_RCU_sht_max )
- CDSSTRESS_PriorityQueue( pqueue_push_pop, SkipList_RCU_sht_min )
#endif
CDSSTRESS_PriorityQueue( pqueue_push_pop, StdPQueue_vector_spin )
#include <cds/urcu/general_buffered.h>
#include <cds/urcu/general_threaded.h>
#include <cds/urcu/signal_buffered.h>
-#include <cds/urcu/signal_threaded.h>
#include <cds/opt/hash.h>
#include <cds/sync/spinlock.h>
typedef cds::urcu::gc< cds::urcu::general_threaded_stripped > rcu_gpt;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cds::urcu::gc< cds::urcu::signal_buffered_stripped > rcu_shb;
- typedef cds::urcu::gc< cds::urcu::signal_threaded_stripped > rcu_sht;
#endif
template <typename Key>
typedef cc::ellen_bintree::internal_node< key_type, leaf_node > internal_node;
typedef cc::ellen_bintree::update_desc< leaf_node, internal_node > update_desc;
};
- struct sht {
- typedef cc::ellen_bintree::node<rcu_sht, key_val> leaf_node;
- typedef cc::ellen_bintree::internal_node< key_type, leaf_node > internal_node;
- typedef cc::ellen_bintree::update_desc< leaf_node, internal_node > update_desc;
- };
#endif
};
typedef cds::memory::pool_allocator< typename ellen_bintree_props::shb::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
};
typedef EllenBinTreeSet< rcu_shb, key_type, key_val, traits_EllenBinTreeSet_shb > EllenBinTreeSet_rcu_shb;
-
- struct traits_EllenBinTreeSet_sht : public traits_EllenBinTreeSet
- {
- typedef cds::memory::pool_allocator< typename ellen_bintree_props::sht::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
- };
- typedef EllenBinTreeSet< rcu_sht, key_type, key_val, traits_EllenBinTreeSet_sht > EllenBinTreeSet_rcu_sht;
#endif
//
typedef cds::memory::pool_allocator< typename ellen_bintree_props::shb::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
};
typedef EllenBinTreeSet< rcu_shb, key_type, key_val, traits_EllenBinTreeSet_stat_shb > EllenBinTreeSet_rcu_shb_stat;
-
- struct traits_EllenBinTreeSet_stat_sht : public traits_EllenBinTreeSet_stat
- {
- typedef cds::memory::pool_allocator< typename ellen_bintree_props::sht::update_desc, ellen_bintree_pool::update_desc_pool_accessor > update_desc_allocator;
- };
- typedef EllenBinTreeSet< rcu_sht, key_type, key_val, traits_EllenBinTreeSet_stat_sht > EllenBinTreeSet_rcu_sht_stat;
#endif
};
//typedef EllenBinTreeSet<GC, Key, T, Traits> set_type;
GC::force_dispose();
ellen_bintree_check::check_stat( s.statistics());
-/*
- bool const threaded_rcu = std::is_same<typename set_type::rcu_tag, cds::urcu::general_threaded_tag >::value
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
- || std::is_same<typename set_type::rcu_tag, signal_threaded_tag >::value
-#endif
-;
- if ( !threaded_rcu ) {
- EXPECT_EQ( ellen_bintree_pool::internal_node_counter::m_nAlloc.get(), ellen_bintree_pool::internal_node_counter::m_nFree.get());
- }
-*/
}
template <typename GC, typename Key, typename T, typename Traits>
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
# define CDSSTRESS_EllenBinTreeSet_SHRCU( fixture, test_case, key_type, value_type ) \
CDSSTRESS_EllenBinTreeSet_case( fixture, test_case, EllenBinTreeSet_rcu_shb, key_type, value_type ) \
- CDSSTRESS_EllenBinTreeSet_case( fixture, test_case, EllenBinTreeSet_rcu_sht, key_type, value_type ) \
CDSSTRESS_EllenBinTreeSet_case( fixture, test_case, EllenBinTreeSet_rcu_shb_stat, key_type, value_type ) \
- CDSSTRESS_EllenBinTreeSet_case( fixture, test_case, EllenBinTreeSet_rcu_sht_stat, key_type, value_type )
+
#else
# define CDSSTRESS_EllenBinTreeSet_SHRCU( fixture, test_case, key_type, value_type )
#endif
typedef FeldmanHashSet< rcu_gpt, key_val<std::hash<key_type>>, default_traits > FeldmanHashSet_rcu_gpt_stdhash;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef FeldmanHashSet< rcu_shb, key_val<std::hash<key_type>>, default_traits > FeldmanHashSet_rcu_shb_stdhash;
- typedef FeldmanHashSet< rcu_sht, key_val<std::hash<key_type>>, default_traits > FeldmanHashSet_rcu_sht_stdhash;
#endif
struct traits_FeldmanHashSet_stat: public cc::feldman_hashset::make_traits<
typedef FeldmanHashSet< rcu_gpt, key_val<std::hash<key_type>>, traits_FeldmanHashSet_stat > FeldmanHashSet_rcu_gpt_stdhash_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef FeldmanHashSet< rcu_shb, key_val<std::hash<key_type>>, traits_FeldmanHashSet_stat > FeldmanHashSet_rcu_shb_stdhash_stat;
- typedef FeldmanHashSet< rcu_sht, key_val<std::hash<key_type>>, traits_FeldmanHashSet_stat > FeldmanHashSet_rcu_sht_stdhash_stat;
#endif
// CityHash
typedef FeldmanHashSet< rcu_gpt, key_val<::cds_test::city64>, traits_FeldmanHashSet_city64 > FeldmanHashSet_rcu_gpt_city64;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef FeldmanHashSet< rcu_shb, key_val<::cds_test::city64>, traits_FeldmanHashSet_city64 > FeldmanHashSet_rcu_shb_city64;
- typedef FeldmanHashSet< rcu_sht, key_val<::cds_test::city64>, traits_FeldmanHashSet_city64 > FeldmanHashSet_rcu_sht_city64;
#endif
struct traits_FeldmanHashSet_city64_stat : public traits_FeldmanHashSet_city64
typedef FeldmanHashSet< rcu_gpt, key_val<::cds_test::city64>, traits_FeldmanHashSet_city64_stat > FeldmanHashSet_rcu_gpt_city64_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef FeldmanHashSet< rcu_shb, key_val<::cds_test::city64>, traits_FeldmanHashSet_city64_stat > FeldmanHashSet_rcu_shb_city64_stat;
- typedef FeldmanHashSet< rcu_sht, key_val<::cds_test::city64>, traits_FeldmanHashSet_city64_stat > FeldmanHashSet_rcu_sht_city64_stat;
#endif
struct traits_FeldmanHashSet_city128 : public default_traits
typedef FeldmanHashSet< rcu_gpt, key_val<::cds_test::city128>, traits_FeldmanHashSet_city128 > FeldmanHashSet_rcu_gpt_city128;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef FeldmanHashSet< rcu_shb, key_val<::cds_test::city128>, traits_FeldmanHashSet_city128 > FeldmanHashSet_rcu_shb_city128;
- typedef FeldmanHashSet< rcu_sht, key_val<::cds_test::city128>, traits_FeldmanHashSet_city128 > FeldmanHashSet_rcu_sht_city128;
#endif
struct traits_FeldmanHashSet_city128_stat : public traits_FeldmanHashSet_city128
typedef FeldmanHashSet< rcu_gpt, key_val<::cds_test::city128>, traits_FeldmanHashSet_city128_stat > FeldmanHashSet_rcu_gpt_city128_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef FeldmanHashSet< rcu_shb, key_val<::cds_test::city128>, traits_FeldmanHashSet_city128_stat > FeldmanHashSet_rcu_shb_city128_stat;
- typedef FeldmanHashSet< rcu_sht, key_val<::cds_test::city128>, traits_FeldmanHashSet_city128_stat > FeldmanHashSet_rcu_sht_city128_stat;
#endif
#endif // #if CDS_BUILD_BITS == 64
typedef FeldmanHashSet< rcu_gpt, typename fixed_sized_key::key_val, typename fixed_sized_key::traits > FeldmanHashSet_rcu_gpt_fixed;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef FeldmanHashSet< rcu_shb, typename fixed_sized_key::key_val, typename fixed_sized_key::traits > FeldmanHashSet_rcu_shb_fixed;
- typedef FeldmanHashSet< rcu_sht, typename fixed_sized_key::key_val, typename fixed_sized_key::traits > FeldmanHashSet_rcu_sht_fixed;
#endif
typedef FeldmanHashSet< cds::gc::HP, typename fixed_sized_key::key_val, typename fixed_sized_key::traits_stat > FeldmanHashSet_hp_fixed_stat;
typedef FeldmanHashSet< rcu_gpt, typename fixed_sized_key::key_val, typename fixed_sized_key::traits_stat > FeldmanHashSet_rcu_gpt_fixed_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef FeldmanHashSet< rcu_shb, typename fixed_sized_key::key_val, typename fixed_sized_key::traits_stat > FeldmanHashSet_rcu_shb_fixed_stat;
- typedef FeldmanHashSet< rcu_sht, typename fixed_sized_key::key_val, typename fixed_sized_key::traits_stat > FeldmanHashSet_rcu_sht_fixed_stat;
#endif
};
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
# define CDSSTRESS_FeldmanHashSet_fixed_SHRCU( fixture, test_case, key_type, value_type ) \
CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_shb_fixed, key_type, value_type ) \
- CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_sht_fixed, key_type, value_type ) \
CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_shb_fixed_stat, key_type, value_type ) \
- CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_sht_fixed_stat, key_type, value_type )
# define CDSSTRESS_FeldmanHashSet_stdhash_SHRCU( fixture, test_case, key_type, value_type ) \
CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_shb_stdhash, key_type, value_type ) \
- CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_sht_stdhash, key_type, value_type ) \
CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_shb_stdhash_stat, key_type, value_type ) \
- CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_sht_stdhash_stat, key_type, value_type )
# if CDS_BUILD_BITS == 64
# define CDSSTRESS_FeldmanHashSet_city_SHRCU( fixture, test_case, key_type, value_type ) \
CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_shb_city64, key_type, value_type ) \
- CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_sht_city64, key_type, value_type ) \
CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_shb_city64_stat, key_type, value_type ) \
- CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_sht_city64_stat, key_type, value_type ) \
CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_shb_city128, key_type, value_type ) \
- CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_sht_city128, key_type, value_type ) \
CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_shb_city128_stat, key_type, value_type ) \
- CDSSTRESS_FeldmanHashSet_case( fixture, test_case, FeldmanHashSet_rcu_sht_city128_stat, key_type, value_type )
+
# else
# define CDSSTRESS_FeldmanHashSet_city_SHRCU( fixture, test_case, key_type, value_type )
# endif
typedef cc::LazyList< rcu_gpt, key_val, traits_LazyList_cmp > LazyList_RCU_GPT_cmp;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::LazyList< rcu_shb, key_val, traits_LazyList_cmp > LazyList_RCU_SHB_cmp;
- typedef cc::LazyList< rcu_sht, key_val, traits_LazyList_cmp > LazyList_RCU_SHT_cmp;
#endif
struct traits_LazyList_cmp_stat : public traits_LazyList_cmp
typedef cc::LazyList< rcu_gpt, key_val, traits_LazyList_cmp_stat > LazyList_RCU_GPT_cmp_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::LazyList< rcu_shb, key_val, traits_LazyList_cmp_stat > LazyList_RCU_SHB_cmp_stat;
- typedef cc::LazyList< rcu_sht, key_val, traits_LazyList_cmp_stat > LazyList_RCU_SHT_cmp_stat;
#endif
struct traits_LazyList_cmp_seqcst :
typedef cc::LazyList< rcu_gpt, key_val, traits_LazyList_cmp_seqcst > LazyList_RCU_GPT_cmp_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::LazyList< rcu_shb, key_val, traits_LazyList_cmp_seqcst > LazyList_RCU_SHB_cmp_seqcst;
- typedef cc::LazyList< rcu_sht, key_val, traits_LazyList_cmp_seqcst > LazyList_RCU_SHT_cmp_seqcst;
#endif
struct traits_LazyList_less:
typedef cc::LazyList< rcu_gpt, key_val, traits_LazyList_less > LazyList_RCU_GPT_less;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::LazyList< rcu_shb, key_val, traits_LazyList_less > LazyList_RCU_SHB_less;
- typedef cc::LazyList< rcu_sht, key_val, traits_LazyList_less > LazyList_RCU_SHT_less;
#endif
struct traits_LazyList_less_stat: public traits_LazyList_less
typedef cc::LazyList< rcu_gpt, key_val, traits_LazyList_less_stat > LazyList_RCU_GPT_less_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::LazyList< rcu_shb, key_val, traits_LazyList_less_stat > LazyList_RCU_SHB_less_stat;
- typedef cc::LazyList< rcu_sht, key_val, traits_LazyList_less_stat > LazyList_RCU_SHT_less_stat;
#endif
struct traits_LazyList_less_seqcst :
typedef cc::LazyList< rcu_gpt, key_val, traits_LazyList_less_seqcst > LazyList_RCU_GPT_less_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::LazyList< rcu_shb, key_val, traits_LazyList_less_seqcst > LazyList_RCU_SHB_less_seqcst;
- typedef cc::LazyList< rcu_sht, key_val, traits_LazyList_less_seqcst > LazyList_RCU_SHT_less_seqcst;
#endif
};
typedef MichaelHashSet< rcu_gpt, typename ml::MichaelList_RCU_GPT_cmp, traits_MichaelSet > MichaelSet_RCU_GPT_cmp;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashSet< rcu_shb, typename ml::MichaelList_RCU_SHB_cmp, traits_MichaelSet > MichaelSet_RCU_SHB_cmp;
- typedef MichaelHashSet< rcu_sht, typename ml::MichaelList_RCU_SHT_cmp, traits_MichaelSet > MichaelSet_RCU_SHT_cmp;
#endif
typedef MichaelHashSet< cds::gc::HP, typename ml::MichaelList_HP_cmp_stat, traits_MichaelSet > MichaelSet_HP_cmp_stat;
typedef MichaelHashSet< rcu_gpt, typename ml::MichaelList_RCU_GPT_cmp_stat, traits_MichaelSet > MichaelSet_RCU_GPT_cmp_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashSet< rcu_shb, typename ml::MichaelList_RCU_SHB_cmp_stat, traits_MichaelSet > MichaelSet_RCU_SHB_cmp_stat;
- typedef MichaelHashSet< rcu_sht, typename ml::MichaelList_RCU_SHT_cmp_stat, traits_MichaelSet > MichaelSet_RCU_SHT_cmp_stat;
#endif
typedef MichaelHashSet< cds::gc::HP, typename ml::MichaelList_HP_less, traits_MichaelSet > MichaelSet_HP_less;
typedef MichaelHashSet< rcu_gpt, typename ml::MichaelList_RCU_GPT_less, traits_MichaelSet > MichaelSet_RCU_GPT_less;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashSet< rcu_shb, typename ml::MichaelList_RCU_SHB_less, traits_MichaelSet > MichaelSet_RCU_SHB_less;
- typedef MichaelHashSet< rcu_sht, typename ml::MichaelList_RCU_SHT_less, traits_MichaelSet > MichaelSet_RCU_SHT_less;
#endif
typedef MichaelHashSet< cds::gc::HP, typename ml::MichaelList_HP_less_stat, traits_MichaelSet > MichaelSet_HP_less_stat;
typedef MichaelHashSet< rcu_gpt, typename ml::MichaelList_RCU_GPT_less_stat, traits_MichaelSet > MichaelSet_RCU_GPT_less_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashSet< rcu_shb, typename ml::MichaelList_RCU_SHB_less_stat, traits_MichaelSet > MichaelSet_RCU_SHB_less_stat;
- typedef MichaelHashSet< rcu_sht, typename ml::MichaelList_RCU_SHT_less_stat, traits_MichaelSet > MichaelSet_RCU_SHT_less_stat;
#endif
typedef MichaelHashSet< cds::gc::HP, typename ml::MichaelList_HP_less_seqcst, traits_MichaelSet > MichaelSet_HP_less_seqcst;
typedef MichaelHashSet< rcu_gpt, typename ml::MichaelList_RCU_GPT_less_seqcst, traits_MichaelSet > MichaelSet_RCU_GPT_less_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashSet< rcu_shb, typename ml::MichaelList_RCU_SHB_less_seqcst, traits_MichaelSet > MichaelSet_RCU_SHB_less_seqcst;
- typedef MichaelHashSet< rcu_sht, typename ml::MichaelList_RCU_SHT_less_seqcst, traits_MichaelSet > MichaelSet_RCU_SHT_less_seqcst;
#endif
typedef MichaelHashSet< rcu_gpt, typename ll::LazyList_RCU_GPT_cmp, traits_MichaelSet > MichaelSet_Lazy_RCU_GPT_cmp;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashSet< rcu_shb, typename ll::LazyList_RCU_SHB_cmp, traits_MichaelSet > MichaelSet_Lazy_RCU_SHB_cmp;
- typedef MichaelHashSet< rcu_sht, typename ll::LazyList_RCU_SHT_cmp, traits_MichaelSet > MichaelSet_Lazy_RCU_SHT_cmp;
#endif
typedef MichaelHashSet< cds::gc::HP, typename ll::LazyList_HP_cmp_stat, traits_MichaelSet > MichaelSet_Lazy_HP_cmp_stat;
typedef MichaelHashSet< rcu_gpt, typename ll::LazyList_RCU_GPT_cmp_stat, traits_MichaelSet > MichaelSet_Lazy_RCU_GPT_cmp_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashSet< rcu_shb, typename ll::LazyList_RCU_SHB_cmp_stat, traits_MichaelSet > MichaelSet_Lazy_RCU_SHB_cmp_stat;
- typedef MichaelHashSet< rcu_sht, typename ll::LazyList_RCU_SHT_cmp_stat, traits_MichaelSet > MichaelSet_Lazy_RCU_SHT_cmp_stat;
#endif
typedef MichaelHashSet< cds::gc::HP, typename ll::LazyList_HP_less, traits_MichaelSet > MichaelSet_Lazy_HP_less;
typedef MichaelHashSet< rcu_gpt, typename ll::LazyList_RCU_GPT_less, traits_MichaelSet > MichaelSet_Lazy_RCU_GPT_less;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashSet< rcu_shb, typename ll::LazyList_RCU_SHB_less, traits_MichaelSet > MichaelSet_Lazy_RCU_SHB_less;
- typedef MichaelHashSet< rcu_sht, typename ll::LazyList_RCU_SHT_less, traits_MichaelSet > MichaelSet_Lazy_RCU_SHT_less;
#endif
typedef MichaelHashSet< cds::gc::HP, typename ll::LazyList_HP_less_stat, traits_MichaelSet > MichaelSet_Lazy_HP_less_stat;
typedef MichaelHashSet< rcu_gpt, typename ll::LazyList_RCU_GPT_less_stat, traits_MichaelSet > MichaelSet_Lazy_RCU_GPT_less_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashSet< rcu_shb, typename ll::LazyList_RCU_SHB_less_stat, traits_MichaelSet > MichaelSet_Lazy_RCU_SHB_less_stat;
- typedef MichaelHashSet< rcu_sht, typename ll::LazyList_RCU_SHT_less_stat, traits_MichaelSet > MichaelSet_Lazy_RCU_SHT_less_stat;
#endif
typedef MichaelHashSet< cds::gc::HP, typename ll::LazyList_HP_less_seqcst, traits_MichaelSet > MichaelSet_Lazy_HP_less_seqcst;
typedef MichaelHashSet< rcu_gpt, typename ll::LazyList_RCU_GPT_less_seqcst, traits_MichaelSet > MichaelSet_Lazy_RCU_GPT_less_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef MichaelHashSet< rcu_shb, typename ll::LazyList_RCU_SHB_less_seqcst, traits_MichaelSet > MichaelSet_Lazy_RCU_SHB_less_seqcst;
- typedef MichaelHashSet< rcu_sht, typename ll::LazyList_RCU_SHT_less_seqcst, traits_MichaelSet > MichaelSet_Lazy_RCU_SHT_less_seqcst;
#endif
typedef cc::MichaelList< rcu_gpt, key_val, traits_MichaelList_cmp > MichaelList_RCU_GPT_cmp;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::MichaelList< rcu_shb, key_val, traits_MichaelList_cmp > MichaelList_RCU_SHB_cmp;
- typedef cc::MichaelList< rcu_sht, key_val, traits_MichaelList_cmp > MichaelList_RCU_SHT_cmp;
#endif
struct traits_MichaelList_cmp_stat: public traits_MichaelList_cmp
typedef cc::MichaelList< rcu_gpt, key_val, traits_MichaelList_cmp_stat > MichaelList_RCU_GPT_cmp_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::MichaelList< rcu_shb, key_val, traits_MichaelList_cmp_stat > MichaelList_RCU_SHB_cmp_stat;
- typedef cc::MichaelList< rcu_sht, key_val, traits_MichaelList_cmp_stat > MichaelList_RCU_SHT_cmp_stat;
#endif
struct traits_MichaelList_cmp_seqcst : public traits_MichaelList_cmp
typedef cc::MichaelList< rcu_gpt, key_val, traits_MichaelList_cmp_seqcst > MichaelList_RCU_GPT_cmp_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::MichaelList< rcu_shb, key_val, traits_MichaelList_cmp_seqcst > MichaelList_RCU_SHB_cmp_seqcst;
- typedef cc::MichaelList< rcu_sht, key_val, traits_MichaelList_cmp_seqcst > MichaelList_RCU_SHT_cmp_seqcst;
#endif
struct traits_MichaelList_less :
typedef cc::MichaelList< rcu_gpt, key_val, traits_MichaelList_less > MichaelList_RCU_GPT_less;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::MichaelList< rcu_shb, key_val, traits_MichaelList_less > MichaelList_RCU_SHB_less;
- typedef cc::MichaelList< rcu_sht, key_val, traits_MichaelList_less > MichaelList_RCU_SHT_less;
#endif
struct traits_MichaelList_less_stat : public traits_MichaelList_less
typedef cc::MichaelList< rcu_gpt, key_val, traits_MichaelList_less_stat > MichaelList_RCU_GPT_less_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::MichaelList< rcu_shb, key_val, traits_MichaelList_less_stat > MichaelList_RCU_SHB_less_stat;
- typedef cc::MichaelList< rcu_sht, key_val, traits_MichaelList_less_stat > MichaelList_RCU_SHT_less_stat;
#endif
struct traits_MichaelList_less_seqcst :
typedef cc::MichaelList< rcu_gpt, key_val, traits_MichaelList_less_seqcst > MichaelList_RCU_GPT_less_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef cc::MichaelList< rcu_shb, key_val, traits_MichaelList_less_seqcst > MichaelList_RCU_SHB_less_seqcst;
- typedef cc::MichaelList< rcu_sht, key_val, traits_MichaelList_less_seqcst > MichaelList_RCU_SHT_less_seqcst;
#endif
};
typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_pascal > SkipListSet_rcu_gpt_less_pascal;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_pascal > SkipListSet_rcu_shb_less_pascal;
- typedef SkipListSet< rcu_sht, key_val, traits_SkipListSet_less_pascal > SkipListSet_rcu_sht_less_pascal;
#endif
class traits_SkipListSet_less_pascal_seqcst: public cc::skip_list::make_traits <
typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_pascal_seqcst > SkipListSet_rcu_gpt_less_pascal_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_pascal_seqcst > SkipListSet_rcu_shb_less_pascal_seqcst;
- typedef SkipListSet< rcu_sht, key_val, traits_SkipListSet_less_pascal_seqcst > SkipListSet_rcu_sht_less_pascal_seqcst;
#endif
class traits_SkipListSet_less_pascal_stat: public cc::skip_list::make_traits <
typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_pascal_stat > SkipListSet_rcu_gpt_less_pascal_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_pascal_stat > SkipListSet_rcu_shb_less_pascal_stat;
- typedef SkipListSet< rcu_sht, key_val, traits_SkipListSet_less_pascal_stat > SkipListSet_rcu_sht_less_pascal_stat;
#endif
class traits_SkipListSet_cmp_pascal: public cc::skip_list::make_traits <
typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_cmp_pascal > SkipListSet_rcu_gpt_cmp_pascal;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_cmp_pascal > SkipListSet_rcu_shb_cmp_pascal;
- typedef SkipListSet< rcu_sht, key_val, traits_SkipListSet_cmp_pascal > SkipListSet_rcu_sht_cmp_pascal;
#endif
class traits_SkipListSet_cmp_pascal_stat: public cc::skip_list::make_traits <
typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_cmp_pascal_stat > SkipListSet_rcu_gpt_cmp_pascal_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_cmp_pascal_stat > SkipListSet_rcu_shb_cmp_pascal_stat;
- typedef SkipListSet< rcu_sht, key_val, traits_SkipListSet_cmp_pascal_stat > SkipListSet_rcu_sht_cmp_pascal_stat;
#endif
class traits_SkipListSet_less_xorshift: public cc::skip_list::make_traits <
typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_xorshift > SkipListSet_rcu_gpt_less_xorshift;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_xorshift > SkipListSet_rcu_shb_less_xorshift;
- typedef SkipListSet< rcu_sht, key_val, traits_SkipListSet_less_xorshift > SkipListSet_rcu_sht_less_xorshift;
#endif
class traits_SkipListSet_less_xorshift_stat: public cc::skip_list::make_traits <
typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_less_xorshift_stat > SkipListSet_rcu_gpt_less_xorshift_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_less_xorshift_stat > SkipListSet_rcu_shb_less_xorshift_stat;
- typedef SkipListSet< rcu_sht, key_val, traits_SkipListSet_less_xorshift_stat > SkipListSet_rcu_sht_less_xorshift_stat;
#endif
class traits_SkipListSet_cmp_xorshift: public cc::skip_list::make_traits <
typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_cmp_xorshift > SkipListSet_rcu_gpt_cmp_xorshift;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_cmp_xorshift > SkipListSet_rcu_shb_cmp_xorshift;
- typedef SkipListSet< rcu_sht, key_val, traits_SkipListSet_cmp_xorshift > SkipListSet_rcu_sht_cmp_xorshift;
#endif
class traits_SkipListSet_cmp_xorshift_stat: public cc::skip_list::make_traits <
typedef SkipListSet< rcu_gpt, key_val, traits_SkipListSet_cmp_xorshift_stat > SkipListSet_rcu_gpt_cmp_xorshift_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SkipListSet< rcu_shb, key_val, traits_SkipListSet_cmp_xorshift_stat > SkipListSet_rcu_shb_cmp_xorshift_stat;
- typedef SkipListSet< rcu_sht, key_val, traits_SkipListSet_cmp_xorshift_stat > SkipListSet_rcu_sht_cmp_xorshift_stat;
#endif
};
#if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL > 1
# define CDSSTRESS_SkipListSet_SHRCU_2( fixture, test_case, key_type, value_type ) \
CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_less_pascal_seqcst, key_type, value_type) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_sht_less_pascal_seqcst, key_type, value_type) \
#else
# define CDSSTRESS_SkipListSet_SHRCU_2( fixture, test_case, key_type, value_type )
#if defined(CDS_STRESS_TEST_LEVEL) && CDS_STRESS_TEST_LEVEL == 1
# define CDSSTRESS_SkipListSet_SHRCU_1( fixture, test_case, key_type, value_type ) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_sht_less_pascal, key_type, value_type) \
CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_less_pascal_stat, key_type, value_type) \
CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_cmp_pascal, key_type, value_type) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_sht_cmp_pascal_stat, key_type, value_type) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_sht_less_xorshift, key_type, value_type) \
CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_less_xorshift_stat, key_type, value_type) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_sht_cmp_xorshift, key_type, value_type) \
CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_cmp_xorshift_stat, key_type, value_type) \
#else
# define CDSSTRESS_SkipListSet_SHRCU( fixture, test_case, key_type, value_type ) \
CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_less_pascal, key_type, value_type) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_sht_less_pascal_stat, key_type, value_type) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_sht_cmp_pascal, key_type, value_type) \
CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_cmp_pascal_stat, key_type, value_type) \
CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_less_xorshift, key_type, value_type) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_sht_less_xorshift_stat, key_type, value_type) \
CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_shb_cmp_xorshift, key_type, value_type) \
- CDSSTRESS_SkipListSet_case( fixture, test_case, SkipListSet_rcu_sht_cmp_xorshift_stat, key_type, value_type) \
CDSSTRESS_SkipListSet_SHRCU_1( fixture, test_case, key_type, value_type ) \
CDSSTRESS_SkipListSet_SHRCU_2( fixture, test_case, key_type, value_type ) \
typedef SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_GPT_dyn_cmp;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_SHB_dyn_cmp;
- typedef SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_dyn_cmp > SplitList_Michael_RCU_SHT_dyn_cmp;
#endif
struct traits_SplitList_Michael_dyn_cmp_swar: public traits_SplitList_Michael_dyn_cmp
typedef SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_dyn_cmp_swar > SplitList_Michael_RCU_GPT_dyn_cmp_swar;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_dyn_cmp_swar > SplitList_Michael_RCU_SHB_dyn_cmp_swar;
- typedef SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_dyn_cmp_swar > SplitList_Michael_RCU_SHT_dyn_cmp_swar;
#endif
struct traits_SplitList_Michael_dyn_cmp_stat :
typedef SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_GPT_dyn_cmp_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_SHB_dyn_cmp_stat;
- typedef SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_dyn_cmp_stat > SplitList_Michael_RCU_SHT_dyn_cmp_stat;
#endif
struct traits_SplitList_Michael_dyn_cmp_seqcst :
typedef SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_GPT_dyn_cmp_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_SHB_dyn_cmp_seqcst;
- typedef SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_dyn_cmp_seqcst > SplitList_Michael_RCU_SHT_dyn_cmp_seqcst;
#endif
struct traits_SplitList_Michael_st_cmp :
typedef SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_GPT_st_cmp;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_SHB_st_cmp;
- typedef SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_st_cmp > SplitList_Michael_RCU_SHT_st_cmp;
#endif
//HP + less
typedef SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_GPT_dyn_less;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_SHB_dyn_less;
- typedef SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_dyn_less > SplitList_Michael_RCU_SHT_dyn_less;
#endif
struct traits_SplitList_Michael_st_less :
typedef SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_GPT_st_less;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_SHB_st_less;
- typedef SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_st_less > SplitList_Michael_RCU_SHT_st_less;
#endif
struct traits_SplitList_Michael_st_less_stat :
typedef SplitListSet< rcu_gpt, key_val, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_GPT_st_less_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListSet< rcu_shb, key_val, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_SHB_st_less_stat;
- typedef SplitListSet< rcu_sht, key_val, traits_SplitList_Michael_st_less_stat > SplitList_Michael_RCU_SHT_st_less_stat;
#endif
// ***************************************************************************
typedef SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_GPT_dyn_cmp;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_SHB_dyn_cmp;
- typedef SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_SHT_dyn_cmp;
#endif
struct traits_SplitList_Lazy_dyn_cmp_stat : public traits_SplitList_Lazy_dyn_cmp
typedef SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_dyn_cmp_stat > SplitList_Lazy_RCU_GPT_dyn_cmp_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_SHB_dyn_cmp_stat;
- typedef SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_dyn_cmp > SplitList_Lazy_RCU_SHT_dyn_cmp_stat;
#endif
struct traits_SplitList_Lazy_dyn_cmp_seqcst :
typedef SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_GPT_dyn_cmp_seqcst;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_SHB_dyn_cmp_seqcst;
- typedef SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_dyn_cmp_seqcst > SplitList_Lazy_RCU_SHT_dyn_cmp_seqcst;
#endif
struct traits_SplitList_Lazy_st_cmp :
typedef SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_GPT_st_cmp;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_SHB_st_cmp;
- typedef SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_st_cmp > SplitList_Lazy_RCU_SHT_st_cmp;
#endif
struct traits_SplitList_Lazy_dyn_less :
typedef SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_GPT_dyn_less;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_SHB_dyn_less;
- typedef SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_dyn_less > SplitList_Lazy_RCU_SHT_dyn_less;
#endif
struct traits_SplitList_Lazy_st_less :
typedef SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_st_less > SplitList_Lazy_RCU_GPT_st_less;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_st_less > SplitList_Lazy_RCU_SHB_st_less;
- typedef SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_st_less > SplitList_Lazy_RCU_SHT_st_less;
#endif
struct traits_SplitList_Lazy_st_less_stat : public traits_SplitList_Lazy_st_less
typedef SplitListSet< rcu_gpt, key_val, traits_SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_GPT_st_less_stat;
#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
typedef SplitListSet< rcu_shb, key_val, traits_SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_SHB_st_less_stat;
- typedef SplitListSet< rcu_sht, key_val, traits_SplitList_Lazy_st_less_stat > SplitList_Lazy_RCU_SHT_st_less_stat;
#endif
// ***************************************************************************
intrusive_michael_rcu_gpi.cpp
intrusive_michael_rcu_gpt.cpp
intrusive_michael_rcu_shb.cpp
- intrusive_michael_rcu_sht.cpp
)
add_executable(${UNIT_ILIST_MICHAEL} ${UNIT_ILIST_MICHAEL_SOURCES})
target_link_libraries(${UNIT_ILIST_MICHAEL} ${CDS_TEST_LIBRARIES})
intrusive_lazy_rcu_gpi.cpp
intrusive_lazy_rcu_gpt.cpp
intrusive_lazy_rcu_shb.cpp
- intrusive_lazy_rcu_sht.cpp
)
add_executable(${UNIT_ILIST_LAZY} ${UNIT_ILIST_LAZY_SOURCES})
target_link_libraries(${UNIT_ILIST_LAZY} ${CDS_TEST_LIBRARIES})
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_intrusive_lazy_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, IntrusiveLazyList, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, IntrusiveLazyList, rcu_implementation_stripped );
-
-#endif // #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_intrusive_michael_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, IntrusiveMichaelList, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, IntrusiveMichaelList, rcu_implementation_stripped );
-
-#endif // #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
intrusive_feldman_hashset_rcu_gpi.cpp
intrusive_feldman_hashset_rcu_gpt.cpp
intrusive_feldman_hashset_rcu_shb.cpp
- intrusive_feldman_hashset_rcu_sht.cpp
)
add_executable(${UNIT_ISET_FELDMAN} ${UNIT_ISET_FELDMAN_SOURCES})
target_link_libraries(${UNIT_ISET_FELDMAN} ${CDS_TEST_LIBRARIES})
intrusive_michael_michael_rcu_gpi.cpp
intrusive_michael_michael_rcu_gpt.cpp
intrusive_michael_michael_rcu_shb.cpp
- intrusive_michael_michael_rcu_sht.cpp
)
add_executable(${UNIT_ISET_MICHAEL} ${UNIT_ISET_MICHAEL_SOURCES})
target_link_libraries(${UNIT_ISET_MICHAEL} ${CDS_TEST_LIBRARIES})
intrusive_michael_lazy_rcu_gpi.cpp
intrusive_michael_lazy_rcu_gpt.cpp
intrusive_michael_lazy_rcu_shb.cpp
- intrusive_michael_lazy_rcu_sht.cpp
)
add_executable(${UNIT_ISET_MICHAEL_LAZY} ${UNIT_ISET_MICHAEL_LAZY_SOURCES})
target_link_libraries(${UNIT_ISET_MICHAEL_LAZY} ${CDS_TEST_LIBRARIES})
intrusive_skiplist_rcu_gpi.cpp
intrusive_skiplist_rcu_gpt.cpp
intrusive_skiplist_rcu_shb.cpp
- intrusive_skiplist_rcu_sht.cpp
)
add_executable(${UNIT_ISET_SKIP} ${UNIT_ISET_SKIP_SOURCES})
target_link_libraries(${UNIT_ISET_SKIP} ${CDS_TEST_LIBRARIES})
intrusive_split_michael_rcu_gpi.cpp
intrusive_split_michael_rcu_gpt.cpp
intrusive_split_michael_rcu_shb.cpp
- intrusive_split_michael_rcu_sht.cpp
)
add_executable(${UNIT_ISET_SPLIT_MICHAEL} ${UNIT_ISET_SPLIT_MICHAEL_SOURCES})
target_link_libraries(${UNIT_ISET_SPLIT_MICHAEL} ${CDS_TEST_LIBRARIES})
intrusive_split_lazy_rcu_gpi.cpp
intrusive_split_lazy_rcu_gpt.cpp
intrusive_split_lazy_rcu_shb.cpp
- intrusive_split_lazy_rcu_sht.cpp
)
add_executable(${UNIT_ISET_SPLIT_LAZY} ${UNIT_ISET_SPLIT_LAZY_SOURCES})
target_link_libraries(${UNIT_ISET_SPLIT_LAZY} ${CDS_TEST_LIBRARIES})
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_intrusive_feldman_hashset_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, IntrusiveFeldmanHashSet, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, IntrusiveFeldmanHashSet, rcu_implementation_stripped );
-
-#endif // CDS_URCU_SIGNAL_HANDLING_ENABLED
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_intrusive_michael_lazy_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, IntrusiveMichaelLazySet, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, IntrusiveMichaelLazySet, rcu_implementation_stripped );
-
-#endif // #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_intrusive_michael_michael_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, IntrusiveMichaelSet, rcu_implementation );
-
-#endif // #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_intrusive_skiplist_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, IntrusiveSkipListSet, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, IntrusiveSkipListSet, rcu_implementation_stripped );
-
-#endif // CDS_URCU_SIGNAL_HANDLING_ENABLED
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_intrusive_split_lazy_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, IntrusiveSplitLazySet, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, IntrusiveSplitLazySet, rcu_implementation_stripped );
-
-#endif // CDS_URCU_SIGNAL_HANDLING_ENABLED
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_intrusive_split_michael_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, IntrusiveSplitMichaelSet, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, IntrusiveSplitMichaelSet, rcu_implementation_stripped );
-
-#endif // CDS_URCU_SIGNAL_HANDLING_ENABLED
kv_lazy_rcu_gpi.cpp
kv_lazy_rcu_gpt.cpp
kv_lazy_rcu_shb.cpp
- kv_lazy_rcu_sht.cpp
lazy_hp.cpp
lazy_dhp.cpp
lazy_nogc.cpp
lazy_rcu_gpi.cpp
lazy_rcu_gpt.cpp
lazy_rcu_shb.cpp
- lazy_rcu_sht.cpp
)
add_executable(${UNIT_LIST_LAZY} ${UNIT_LIST_LAZY_SOURCES})
target_link_libraries(${UNIT_LIST_LAZY} ${CDS_TEST_LIBRARIES})
kv_michael_rcu_gpi.cpp
kv_michael_rcu_gpt.cpp
kv_michael_rcu_shb.cpp
- kv_michael_rcu_sht.cpp
michael_hp.cpp
michael_dhp.cpp
michael_nogc.cpp
michael_rcu_gpi.cpp
michael_rcu_gpt.cpp
michael_rcu_shb.cpp
- michael_rcu_sht.cpp
)
add_executable(${UNIT_LIST_MICHAEL} ${UNIT_LIST_MICHAEL_SOURCES})
target_link_libraries(${UNIT_LIST_MICHAEL} ${CDS_TEST_LIBRARIES})
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-#include "test_kv_lazy_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, LazyKVList, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, LazyKVList, rcu_implementation_stripped );
-
-#endif
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-#include "test_kv_michael_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, MichaelKVList, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, MichaelKVList, rcu_implementation_stripped );
-
-#endif
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-#include "test_lazy_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, LazyList, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, LazyList, rcu_implementation_stripped );
-
-#endif
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-#include "test_michael_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, MichaelList, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, MichaelList, rcu_implementation_stripped );
-
-#endif
feldman_hashset_rcu_gpi.cpp
feldman_hashset_rcu_gpt.cpp
feldman_hashset_rcu_shb.cpp
- feldman_hashset_rcu_sht.cpp
)
add_executable(${UNIT_MAP_FELDMAN} ${UNIT_MAP_FELDMAN_SOURCES})
target_link_libraries(${UNIT_MAP_FELDMAN} ${CDS_TEST_LIBRARIES})
michael_michael_rcu_gpi.cpp
michael_michael_rcu_gpt.cpp
michael_michael_rcu_shb.cpp
- michael_michael_rcu_sht.cpp
)
add_executable(${UNIT_MAP_MICHAEL} ${UNIT_MAP_MICHAEL_SOURCES})
target_link_libraries(${UNIT_MAP_MICHAEL} ${CDS_TEST_LIBRARIES})
michael_lazy_rcu_gpi.cpp
michael_lazy_rcu_gpt.cpp
michael_lazy_rcu_shb.cpp
- michael_lazy_rcu_sht.cpp
)
add_executable(${UNIT_MAP_MICHAEL_LAZY} ${UNIT_MAP_MICHAEL_LAZY_SOURCES})
target_link_libraries(${UNIT_MAP_MICHAEL_LAZY} ${CDS_TEST_LIBRARIES})
skiplist_rcu_gpi.cpp
skiplist_rcu_gpt.cpp
skiplist_rcu_shb.cpp
- skiplist_rcu_sht.cpp
)
add_executable(${UNIT_MAP_SKIP_LIST} ${UNIT_MAP_SKIP_LIST_SOURCES})
target_link_libraries(${UNIT_MAP_SKIP_LIST} ${CDS_TEST_LIBRARIES})
split_michael_rcu_gpi.cpp
split_michael_rcu_gpt.cpp
split_michael_rcu_shb.cpp
- split_michael_rcu_sht.cpp
)
add_executable(${UNIT_MAP_SPLIT_MICHAEL} ${UNIT_MAP_SPLIT_MICHAEL_SOURCES})
target_link_libraries(${UNIT_MAP_SPLIT_MICHAEL} ${CDS_TEST_LIBRARIES})
split_lazy_rcu_gpi.cpp
split_lazy_rcu_gpt.cpp
split_lazy_rcu_shb.cpp
- split_lazy_rcu_sht.cpp
)
add_executable(${UNIT_MAP_SPLIT_LAZY} ${UNIT_MAP_SPLIT_LAZY_SOURCES})
target_link_libraries(${UNIT_MAP_SPLIT_LAZY} ${CDS_TEST_LIBRARIES})
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_feldman_hashmap_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, FeldmanHashMap, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, FeldmanHashMap, rcu_implementation_stripped );
-
-#endif // CDS_URCU_SIGNAL_HANDLING_ENABLED
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_michael_lazy_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, MichaelLazyMap, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, MichaelLazyMap, rcu_implementation_stripped );
-
-#endif // CDS_URCU_SIGNAL_HANDLING_ENABLED
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_michael_michael_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, MichaelMap, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, MichaelMap, rcu_implementation_stripped );
-
-#endif // CDS_URCU_SIGNAL_HANDLING_ENABLED
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_skiplist_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, SkipListMap, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, SkipListMap, rcu_implementation_stripped );
-
-#endif // CDS_URCU_SIGNAL_HANDLING_ENABLED
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_split_lazy_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, SplitListLazyMap, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, SplitListLazyMap, rcu_implementation_stripped );
-
-#endif // CDS_URCU_SIGNAL_HANDLING_ENABLED
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_split_michael_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, SplitListMichaelMap, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, SplitListMichaelMap, rcu_implementation_stripped );
-
-#endif // CDS_URCU_SIGNAL_HANDLING_ENABLED
feldman_hashset_rcu_gpi.cpp
feldman_hashset_rcu_gpt.cpp
feldman_hashset_rcu_shb.cpp
- feldman_hashset_rcu_sht.cpp
)
add_executable(${UNIT_SET_FELDMAN} ${UNIT_SET_FELDMAN_SOURCES})
target_link_libraries(${UNIT_SET_FELDMAN} ${CDS_TEST_LIBRARIES})
michael_michael_rcu_gpi.cpp
michael_michael_rcu_gpt.cpp
michael_michael_rcu_shb.cpp
- michael_michael_rcu_sht.cpp
)
add_executable(${UNIT_SET_MICHAEL} ${UNIT_SET_MICHAEL_SOURCES})
target_link_libraries(${UNIT_SET_MICHAEL} ${CDS_TEST_LIBRARIES})
michael_lazy_rcu_gpi.cpp
michael_lazy_rcu_gpt.cpp
michael_lazy_rcu_shb.cpp
- michael_lazy_rcu_sht.cpp
)
add_executable(${UNIT_SET_MICHAEL_LAZY} ${UNIT_SET_MICHAEL_LAZY_SOURCES})
target_link_libraries(${UNIT_SET_MICHAEL_LAZY} ${CDS_TEST_LIBRARIES})
skiplist_rcu_gpi.cpp
skiplist_rcu_gpt.cpp
skiplist_rcu_shb.cpp
- skiplist_rcu_sht.cpp
)
add_executable(${UNIT_SET_SKIP} ${UNIT_SET_SKIP_SOURCES})
target_link_libraries(${UNIT_SET_SKIP} ${CDS_TEST_LIBRARIES})
split_michael_rcu_gpi.cpp
split_michael_rcu_gpt.cpp
split_michael_rcu_shb.cpp
- split_michael_rcu_sht.cpp
)
add_executable(${UNIT_SET_SPLIT_MICHAEL} ${UNIT_SET_SPLIT_MICHAEL_SOURCES})
target_link_libraries(${UNIT_SET_SPLIT_MICHAEL} ${CDS_TEST_LIBRARIES})
split_lazy_rcu_gpi.cpp
split_lazy_rcu_gpt.cpp
split_lazy_rcu_shb.cpp
- split_lazy_rcu_sht.cpp
)
add_executable(${UNIT_SET_SPLIT_LAZY} ${UNIT_SET_SPLIT_LAZY_SOURCES})
target_link_libraries(${UNIT_SET_SPLIT_LAZY} ${CDS_TEST_LIBRARIES})
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_feldman_hashset_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, FeldmanHashSet, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, FeldmanHashSet, rcu_implementation_stripped );
-
-#endif // CDS_URCU_SIGNAL_HANDLING_ENABLED
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_michael_lazy_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, MichaelLazySet, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, MichaelLazySet, rcu_implementation_stripped );
-
-#endif // CDS_URCU_SIGNAL_HANDLING_ENABLED
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_michael_michael_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, MichaelSet, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, MichaelSet, rcu_implementation_stripped );
-
-#endif // CDS_URCU_SIGNAL_HANDLING_ENABLED
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_skiplist_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, SkipListSet, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, SkipListSet, rcu_implementation_stripped );
-
-#endif // CDS_URCU_SIGNAL_HANDLING_ENABLED
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_split_lazy_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, SplitListLazySet, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, SplitListLazySet, rcu_implementation_stripped );
-
-#endif // CDS_URCU_SIGNAL_HANDLING_ENABLED
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_split_michael_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, SplitListMichaelSet, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, SplitListMichaelSet, rcu_implementation_stripped );
-
-#endif // CDS_URCU_SIGNAL_HANDLING_ENABLED
bronson_avltree_map_rcu_gpi.cpp
bronson_avltree_map_rcu_gpt.cpp
bronson_avltree_map_rcu_shb.cpp
- bronson_avltree_map_rcu_sht.cpp
bronson_avltree_map_ptr_rcu_gpb.cpp
bronson_avltree_map_ptr_rcu_gpi.cpp
bronson_avltree_map_ptr_rcu_gpt.cpp
bronson_avltree_map_ptr_rcu_shb.cpp
- bronson_avltree_map_ptr_rcu_sht.cpp
ellen_bintree_update_desc_pool.cpp
ellen_bintree_map_hp.cpp
ellen_bintree_map_dhp.cpp
ellen_bintree_map_rcu_gpi.cpp
ellen_bintree_map_rcu_gpt.cpp
ellen_bintree_map_rcu_shb.cpp
- ellen_bintree_map_rcu_sht.cpp
ellen_bintree_set_dhp.cpp
ellen_bintree_set_hp.cpp
ellen_bintree_set_rcu_gpb.cpp
ellen_bintree_set_rcu_gpi.cpp
ellen_bintree_set_rcu_gpt.cpp
ellen_bintree_set_rcu_shb.cpp
- ellen_bintree_set_rcu_sht.cpp
intrusive_ellenbintree_hp.cpp
intrusive_ellenbintree_dhp.cpp
intrusive_ellenbintree_rcu_gpb.cpp
intrusive_ellenbintree_rcu_gpi.cpp
intrusive_ellenbintree_rcu_gpt.cpp
intrusive_ellenbintree_rcu_shb.cpp
- intrusive_ellenbintree_rcu_sht.cpp
)
include_directories(
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_bronson_avltree_map_ptr.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, BronsonAVLTreeMapPtr, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, BronsonAVLTreeMapPtr, rcu_implementation_stripped );
-
-#endif
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_bronson_avltree_map.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, BronsonAVLTreeMap, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, BronsonAVLTreeMap, rcu_implementation_stripped );
-
-#endif
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_ellen_bintree_map_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, EllenBinTreeMap, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, EllenBinTreeMap, rcu_implementation_stripped );
-
-#endif // CDS_URCU_SIGNAL_HANDLING_ENABLED
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_ellen_bintree_set_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, EllenBinTreeSet, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, EllenBinTreeSet, rcu_implementation_stripped );
-
-#endif // CDS_URCU_SIGNAL_HANDLING_ENABLED
+++ /dev/null
-/*
- This file is a part of libcds - Concurrent Data Structures library
-
- (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:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- 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.
-*/
-
-#include <cds/urcu/signal_threaded.h>
-
-#ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
-
-#include "test_intrusive_ellen_bintree_rcu.h"
-
-namespace {
-
- typedef cds::urcu::signal_threaded<> rcu_implementation;
- typedef cds::urcu::signal_threaded_stripped rcu_implementation_stripped;
-
-} // namespace
-
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT, IntrusiveEllenBinTree, rcu_implementation );
-INSTANTIATE_TYPED_TEST_CASE_P( RCU_SHT_stripped, IntrusiveEllenBinTree, rcu_implementation_stripped );
-
-#endif // #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED