From 6e7bff9bbe1b1e33a4be18fbd1d2ba290177bab7 Mon Sep 17 00:00:00 2001 From: khizmax Date: Wed, 13 May 2015 00:11:38 +0300 Subject: [PATCH] Fixed issue #37: removed atomic from EllenBinTree basic_node --- cds/intrusive/details/ellen_bintree_base.h | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/cds/intrusive/details/ellen_bintree_base.h b/cds/intrusive/details/ellen_bintree_base.h index 1bb08e1b..54e928b7 100644 --- a/cds/intrusive/details/ellen_bintree_base.h +++ b/cds/intrusive/details/ellen_bintree_base.h @@ -89,7 +89,7 @@ namespace cds { namespace intrusive { key_infinite = key_infinite1 | key_infinite2 ///< Cumulative infinite flags }; - atomics::atomic m_nFlags ; ///< Internal flags + unsigned int m_nFlags ; ///< Internal flags /// Constructs leaf (bIntrenal == false) or internal (bInternal == true) node explicit basic_node( bool bInternal ) @@ -105,26 +105,25 @@ namespace cds { namespace intrusive { /// Checks if the node is internal bool is_internal() const { - return (m_nFlags.load( atomics::memory_order_relaxed ) & internal) != 0; + return (m_nFlags & internal) != 0; } /// Returns infinite key, 0 if the node is not infinite unsigned int infinite_key() const { - return m_nFlags.load( atomics::memory_order_relaxed ) & key_infinite; + return m_nFlags & key_infinite; } /// Sets infinite key for the node (for internal use only!!!) void infinite_key( int nInf ) { - const unsigned int nFlags = m_nFlags.load( atomics::memory_order_relaxed ) & ~key_infinite; - m_nFlags.store( nFlags, atomics::memory_order_relaxed ); + m_nFlags &= ~key_infinite; switch ( nInf ) { case 1: - m_nFlags.store( nFlags | key_infinite1, atomics::memory_order_relaxed ); + m_nFlags |= key_infinite1; break; case 2: - m_nFlags.store( nFlags | key_infinite2, atomics::memory_order_relaxed ); + m_nFlags |= key_infinite2; break; case 0: break; -- 2.34.1