Statically allocate futex array
[folly.git] / folly / ProducerConsumerQueue.h
index 13948be45218e374777a012ad392d8c59c44cb76..16de57d35486a8207fcb1def59c48d59a1360fd3 100644 (file)
@@ -167,15 +167,20 @@ struct ProducerConsumerQueue {
     return ret;
   }
 
-private:
- char pad0_[CacheLocality::kFalseSharingRange];
- const uint32_t size_;
- T* const records_;
+  // maximum number of items in the queue.
+  size_t capacity() const {
+    return size_ - 1;
+  }
+
+ private:
+  char pad0_[CacheLocality::kFalseSharingRange];
+  const uint32_t size_;
+  T* const records_;
 
- FOLLY_ALIGN_TO_AVOID_FALSE_SHARING std::atomic<unsigned int> readIndex_;
- FOLLY_ALIGN_TO_AVOID_FALSE_SHARING std::atomic<unsigned int> writeIndex_;
 FOLLY_ALIGN_TO_AVOID_FALSE_SHARING std::atomic<unsigned int> readIndex_;
 FOLLY_ALIGN_TO_AVOID_FALSE_SHARING std::atomic<unsigned int> writeIndex_;
 
- char pad1_[CacheLocality::kFalseSharingRange - sizeof(writeIndex_)];
 char pad1_[CacheLocality::kFalseSharingRange - sizeof(writeIndex_)];
 };
 
-}
+} // namespace folly