X-Git-Url: http://plrg.eecs.uci.edu/git/?p=libcds.git;a=blobdiff_plain;f=cds%2Fsync%2Fpool_monitor.h;fp=cds%2Fsync%2Fpool_monitor.h;h=622cd7f843e1bb41815000c8b84ff211fca21cdb;hp=1b73b4042b166fb6e4ff4cf433c1570e8e39d6a0;hb=d6b1e5d936534986ea49267d1b3d2714d7b10f4d;hpb=e8f621b86b7e225790a85728a4d5822b4279f886 diff --git a/cds/sync/pool_monitor.h b/cds/sync/pool_monitor.h index 1b73b404..622cd7f8 100644 --- a/cds/sync/pool_monitor.h +++ b/cds/sync/pool_monitor.h @@ -107,7 +107,7 @@ namespace cds { namespace sync { Template arguments: - \p LockPool - the @ref cds_memory_pool "pool type". The pool must maintain the objects of type \p std::mutex or similar. The access to the pool is not synchronized. - - \p BackOff - back-off strategy for spinning, default is \p cds::backoff::yield + - \p BackOff - back-off strategy for spinning, default is \p cds::backoff::Default - \p Stat - enable (\p true) or disable (\p false, the default) monitor's internal statistics. How to use @@ -116,7 +116,7 @@ namespace cds { namespace sync { typedef cds::sync::pool_monitor< pool_type > sync_monitor; \endcode */ - template + template class pool_monitor { public: @@ -195,7 +195,7 @@ namespace cds { namespace sync { // try lock spin and increment reference counter refspin_type cur = p.m_SyncMonitorInjection.m_RefSpin.load( atomics::memory_order_relaxed ) & ~c_nSpinBit; if ( !p.m_SyncMonitorInjection.m_RefSpin.compare_exchange_weak( cur, cur + c_nRefIncrement + c_nSpinBit, - atomics::memory_order_acquire, atomics::memory_order_relaxed )) + atomics::memory_order_acquire, atomics::memory_order_acquire )) { back_off bkoff; do { @@ -203,7 +203,7 @@ namespace cds { namespace sync { bkoff(); cur &= ~c_nSpinBit; } while ( !p.m_SyncMonitorInjection.m_RefSpin.compare_exchange_weak( cur, cur + c_nRefIncrement + c_nSpinBit, - atomics::memory_order_acquire, atomics::memory_order_relaxed )); + atomics::memory_order_acquire, atomics::memory_order_acquire )); } // spin locked @@ -237,7 +237,7 @@ namespace cds { namespace sync { // try lock spin refspin_type cur = p.m_SyncMonitorInjection.m_RefSpin.load( atomics::memory_order_relaxed ) & ~c_nSpinBit; if ( !p.m_SyncMonitorInjection.m_RefSpin.compare_exchange_weak( cur, cur | c_nSpinBit, - atomics::memory_order_acquire, atomics::memory_order_relaxed )) + atomics::memory_order_acquire, atomics::memory_order_acquire )) { back_off bkoff; do { @@ -245,7 +245,7 @@ namespace cds { namespace sync { bkoff(); cur &= ~c_nSpinBit; } while ( !p.m_SyncMonitorInjection.m_RefSpin.compare_exchange_weak( cur, cur | c_nSpinBit, - atomics::memory_order_acquire, atomics::memory_order_relaxed )); + atomics::memory_order_acquire, atomics::memory_order_acquire )); } // spin locked now