add crete to ring buffer

This commit is contained in:
2025-03-18 12:44:52 +03:00
parent 709d2ce3df
commit 8076ef608a
2 changed files with 14 additions and 5 deletions

View File

@@ -12,7 +12,8 @@ auto main(int argc, char *argv[]) -> int
{
// patterns::ring_buffer
{
hack::patterns::ring_buffer<int> rb(10);
hack::patterns::ring_buffer<int> rb;
rb.create(10);
for (int i = 0; i < 10; ++i) rb.put(i);
hack::log()(rb);
hack::log()(rb.size());

View File

@@ -15,6 +15,7 @@ namespace hack::patterns
using MUTEX = std::lock_guard<std::recursive_mutex>;
public:
ring_buffer() = default;
explicit ring_buffer(int s)
{
m_size = s;
@@ -22,6 +23,13 @@ namespace hack::patterns
};
public:
void create(int s)
{
if (m_size > 0) return;
m_size = s;
m_data.resize(m_size);
}
void put(T item) noexcept
{
MUTEX lock(m_mutex);
@@ -135,10 +143,10 @@ namespace hack::patterns
}
private:
std::size_t m_head{ 0 };
std::size_t m_tail{ 0 };
std::size_t m_size;
bool m_full{ false };
std::size_t m_head = 0;
std::size_t m_tail = 0;
std::size_t m_size = 0;
bool m_full = false;
private:
mutable std::recursive_mutex m_mutex;