From 1359f18a6116c059d4c3cba34076ad991f3f2f89 Mon Sep 17 00:00:00 2001 From: khizmax Date: Sat, 14 Mar 2015 20:47:22 +0300 Subject: [PATCH] Small refactoring, doc fix --- cds/container/vyukov_mpmc_cycle_queue.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/cds/container/vyukov_mpmc_cycle_queue.h b/cds/container/vyukov_mpmc_cycle_queue.h index 1899ac0a..0244e360 100644 --- a/cds/container/vyukov_mpmc_cycle_queue.h +++ b/cds/container/vyukov_mpmc_cycle_queue.h @@ -60,7 +60,7 @@ namespace cds { namespace container { - \p opt::value_cleaner - a functor to clean item dequeued. The functor calls the destructor for queue item. After an item is dequeued, \p value_cleaner cleans the cell that the item has been occupied. - If \p T is a complex type, \p value_cleaner may be the useful feature. + If \p T is a complex type, \p value_cleaner can be an useful feature. Default value is \ref opt::v::destruct_cleaner - \p opt::item_counter - the type of item counting feature. Default is \p cds::atomicity::empty_item_counter (item counting disabled) To enable item counting use \p cds::atomicity::item_counter @@ -173,6 +173,8 @@ namespace cds { namespace container { /// Constructs the queue of capacity \p nCapacity /** For \p cds::opt::v::static_buffer the \p nCapacity parameter is ignored. + + The buffer capacity must be the power of two. */ VyukovMPMCCycleQueue( size_t nCapacity = 0 @@ -185,7 +187,7 @@ namespace cds { namespace container { // Buffer capacity must be power of 2 assert( nCapacity >= 2 && (nCapacity & (nCapacity - 1)) == 0 ); - for (size_t i = 0; i != nCapacity; i += 1) + for (size_t i = 0; i != nCapacity; ++i ) m_buffer[i].sequence.store(i, memory_model::memory_order_relaxed); m_posEnqueue.store(0, memory_model::memory_order_relaxed); @@ -220,9 +222,8 @@ namespace cds { namespace container { intptr_t dif = static_cast(seq) - static_cast(pos); - if (dif == 0) - { - if ( m_posEnqueue.compare_exchange_weak(pos, pos + 1, memory_model::memory_order_relaxed)) + if (dif == 0) { + if ( m_posEnqueue.compare_exchange_weak(pos, pos + 1, memory_model::memory_order_relaxed, atomics::memory_order_relaxed )) break; } else if (dif < 0) @@ -276,9 +277,8 @@ namespace cds { namespace container { intptr_t dif = static_cast(seq) - static_cast(pos); - if (dif == 0) - { - if ( m_posEnqueue.compare_exchange_weak(pos, pos + 1, memory_model::memory_order_relaxed) ) + if (dif == 0) { + if ( m_posEnqueue.compare_exchange_weak(pos, pos + 1, memory_model::memory_order_relaxed, atomics::memory_order_relaxed)) break; } else if (dif < 0) @@ -319,7 +319,7 @@ namespace cds { namespace container { intptr_t dif = static_cast(seq) - static_cast(pos + 1); if (dif == 0) { - if ( m_posDequeue.compare_exchange_weak(pos, pos + 1, memory_model::memory_order_relaxed)) + if ( m_posDequeue.compare_exchange_weak(pos, pos + 1, memory_model::memory_order_relaxed, atomics::memory_order_relaxed)) break; } else if (dif < 0) @@ -330,8 +330,8 @@ namespace cds { namespace container { f( cell->data ); value_cleaner()( cell->data ); - --m_ItemCounter; cell->sequence.store( pos + m_nBufferMask + 1, memory_model::memory_order_release ); + --m_ItemCounter; return true; } @@ -391,7 +391,7 @@ namespace cds { namespace container { /// Returns queue's item count /** The value returned depends on \p vyukov_queue::traits::item_counter option. - For \p atomicity::empty_item_counter, this function always returns 0. + For \p atomicity::empty_item_counter, the function always returns 0. */ size_t size() const { -- 2.34.1