1 #ifndef RING_BUFFER_hh_
2 #define RING_BUFFER_hh_
7 #include <condition_variable>
13 static std::atomic<uint64_t> globalTotalBytes{0};
15 static const uint64_t targetTotalBytes = 28800L * 1024 * 1024 * 1024;
19 std::vector<int16_t>
data;
20 std::vector<int16_t> data2;
21 std::vector<int16_t> data3;
29 :
data(buffer_size), data2(), data3(), size(0), size2(0), size3(0) {
30 std::fill(std::begin(metadata), std::end(metadata),
'\0');
40 std::vector<std::shared_ptr<T>> buffer;
48 std::atomic<size_t> size = 0;
52 std::condition_variable cv_push;
54 std::condition_variable cv_pop;
61 explicit RingBuffer(
size_t max_size) : capacity(max_size), buffer(max_size) {}
65 std::cout <<
"RingBuffer destructor called.\n";
69 void push(
const std::shared_ptr<T>& item);
72 std::shared_ptr<T> pop();