add crete to ring buffer
This commit is contained in:
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user