return false;
}
};
-} // namespace std
-
-CDS_BEGIN_STD_HASH_NAMESPACE
-template <>
-struct hash<map2::key_thread>
-{
- typedef size_t result_type;
- typedef map2::key_thread argument_type;
- size_t operator()(map2::key_thread const& k) const
- {
- return CDS_STD_HASH_NAMESPACE::hash<size_t>()( k.nKey );
- }
- size_t operator()(size_t k) const
+ template <>
+ struct hash<map2::key_thread>
{
- return CDS_STD_HASH_NAMESPACE::hash<size_t>()( k );
- }
-};
-CDS_END_STD_HASH_NAMESPACE
+ typedef size_t result_type;
+ typedef map2::key_thread argument_type;
+
+ size_t operator()( map2::key_thread const& k ) const
+ {
+ return std::hash<size_t>()(k.nKey);
+ }
+ size_t operator()( size_t k ) const
+ {
+ return std::hash<size_t>()(k);
+ }
+ };
+} // namespace std
namespace boost {
inline size_t hash_value( map2::key_thread const& k )
{
- return CDS_STD_HASH_NAMESPACE::hash<size_t>()( k.nKey );
+ return std::hash<size_t>()( k.nKey );
}
-
+
template <>
struct hash<map2::key_thread>
{
namespace map2 {
template <typename Map>
- static inline void check_before_clear( Map& s )
+ static inline void check_before_clear( Map& /*s*/ )
{}
template <typename GC, typename Key, typename T, typename Traits>
typedef size_t value_type;
typedef std::pair<key_type const, value_type> pair_type;
- CDS_ATOMIC::atomic<size_t> m_nInsThreadCount;
+ atomics::atomic<size_t> m_nInsThreadCount;
// Inserts keys from [0..N)
template <class Map>
struct ensure_func
{
template <typename Q>
- void operator()( bool bNew, Q const& )
+ void operator()( bool /*bNew*/, Q const& )
{}
};
public:
}
}
- getTest().m_nInsThreadCount.fetch_sub( 1, CDS_ATOMIC::memory_order_acquire );
+ getTest().m_nInsThreadCount.fetch_sub( 1, atomics::memory_order_acquire );
}
};
++m_nDeleteFailed;
}
}
- if ( getTest().m_nInsThreadCount.load( CDS_ATOMIC::memory_order_acquire ) == 0 )
+ if ( getTest().m_nInsThreadCount.load( atomics::memory_order_acquire ) == 0 )
break;
}
}
++m_nDeleteFailed;
}
}
- if ( getTest().m_nInsThreadCount.load( CDS_ATOMIC::memory_order_acquire ) == 0 )
+ if ( getTest().m_nInsThreadCount.load( atomics::memory_order_acquire ) == 0 )
break;
}
}
for ( size_t k = 0; k < c_nInsThreadCount; ++k ) {
for ( size_t i = 0; i < arrData.size(); ++i ) {
if ( arrData[i] & 1 ) {
- if ( rMap.extract_with( gp, arrData[i], key_less() ))
+ gp = rMap.extract_with( arrData[i], key_less());
+ if ( gp )
++m_nDeleteSuccess;
else
++m_nDeleteFailed;
+ gp.release();
}
}
- if ( getTest().m_nInsThreadCount.load( CDS_ATOMIC::memory_order_acquire ) == 0 )
+ if ( getTest().m_nInsThreadCount.load( atomics::memory_order_acquire ) == 0 )
break;
}
}
for ( size_t k = 0; k < c_nInsThreadCount; ++k ) {
for ( size_t i = arrData.size() - 1; i > 0; --i ) {
if ( arrData[i] & 1 ) {
- if ( rMap.extract_with( gp, arrData[i], key_less() ))
+ gp = rMap.extract_with( arrData[i], key_less());
+ if ( gp )
++m_nDeleteSuccess;
else
++m_nDeleteFailed;
+ gp.release();
}
}
- if ( getTest().m_nInsThreadCount.load( CDS_ATOMIC::memory_order_acquire ) == 0 )
+ if ( getTest().m_nInsThreadCount.load( atomics::memory_order_acquire ) == 0 )
break;
}
}
if ( Map::c_bExtractLockExternal ) {
{
typename Map::rcu_lock l;
- if ( rMap.extract_with( xp, arrData[i], key_less() )) {
+ xp = rMap.extract_with( arrData[i], key_less() );
+ if ( xp )
++m_nDeleteSuccess;
- }
else
++m_nDeleteFailed;
}
- xp.release();
}
else {
- if ( rMap.extract_with( xp, arrData[i], key_less() )) {
+ xp = rMap.extract_with( arrData[i], key_less() );
+ if ( xp )
++m_nDeleteSuccess;
- xp.release();
- }
else
++m_nDeleteFailed;
}
+ xp.release();
}
}
- if ( getTest().m_nInsThreadCount.load( CDS_ATOMIC::memory_order_acquire ) == 0 )
+ if ( getTest().m_nInsThreadCount.load( atomics::memory_order_acquire ) == 0 )
break;
}
}
if ( Map::c_bExtractLockExternal ) {
{
typename Map::rcu_lock l;
- if ( rMap.extract_with( xp, arrData[i], key_less() ))
+ xp = rMap.extract_with( arrData[i], key_less() );
+ if ( xp )
++m_nDeleteSuccess;
else
++m_nDeleteFailed;
}
- xp.release();
}
else {
- if ( rMap.extract_with( xp, arrData[i], key_less() )) {
+ xp = rMap.extract_with( arrData[i], key_less() );
+ if ( xp )
++m_nDeleteSuccess;
- xp.release();
- }
else
++m_nDeleteFailed;
}
+ xp.release();
}
}
- if ( getTest().m_nInsThreadCount.load( CDS_ATOMIC::memory_order_acquire ) == 0 )
+ if ( getTest().m_nInsThreadCount.load( atomics::memory_order_acquire ) == 0 )
break;
}
}
typedef InsertThread<Map> insert_thread;
typedef DeleteThread<Map> delete_thread;
- m_nInsThreadCount.store( c_nInsThreadCount, CDS_ATOMIC::memory_order_release );
+ m_nInsThreadCount.store( c_nInsThreadCount, atomics::memory_order_release );
CppUnitMini::ThreadPool pool( *this );
pool.add( new insert_thread( pool, testMap ), c_nInsThreadCount );
typedef DeleteThread<Map> delete_thread;
typedef ExtractThread< typename Map::gc, Map > extract_thread;
- m_nInsThreadCount.store( c_nInsThreadCount, CDS_ATOMIC::memory_order_release );
+ m_nInsThreadCount.store( c_nInsThreadCount, atomics::memory_order_release );
CppUnitMini::ThreadPool pool( *this );
pool.add( new insert_thread( pool, testMap ), c_nInsThreadCount );