From 7ecd6323ffedbfef92c87c02b2a8680dd53b772c Mon Sep 17 00:00:00 2001
From: lichao <lichao@aiotlink.com>
Date: 星期四, 06 五月 2021 19:37:50 +0800
Subject: [PATCH] rename atomic queue io function.

---
 src/shm_queue.h |   28 ++++++++++++++++++++++++++--
 1 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/src/shm_queue.h b/src/shm_queue.h
index 7e4ec31..c7d3a23 100644
--- a/src/shm_queue.h
+++ b/src/shm_queue.h
@@ -53,8 +53,32 @@
 	bool TryWrite(const D &d) { return queue_.push_back(d); }
 
 private:
-	typedef Circular<D> Queue;
-	Queue queue_;
+	Circular<D> queue_;
+};
+
+template <int Power = 4>
+class SharedQ63
+{
+public:
+	typedef int64_t Data;
+	bool Read(Data &d, const int timeout_ms)
+	{
+		using namespace std::chrono;
+		auto end_time = steady_clock::now() + milliseconds(timeout_ms);
+		do {
+			if (TryRead(d)) {
+				return true;
+			} else {
+				robust::QuickSleep();
+			}
+		} while (steady_clock::now() < end_time);
+		return false;
+	}
+	bool TryRead(Data &d, const bool try_more = true) { return queue_.pop(d, try_more); }
+	bool TryWrite(const Data d, const bool try_more = true) { return queue_.push(d, try_more); }
+
+private:
+	robust::AtomicQueue<Power, Data> queue_;
 };
 
 } // namespace bhome_shm

--
Gitblit v1.8.0