From a04d4d01eb8e38b8ec5367114b5581bd64eee17e Mon Sep 17 00:00:00 2001
From: lichao <lichao@aiotlink.com>
Date: 星期五, 23 四月 2021 15:44:12 +0800
Subject: [PATCH] mutex unlock check timeout to avoid double unlock.

---
 src/shm.cpp |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/src/shm.cpp b/src/shm.cpp
index d499b16..6d7dccd 100644
--- a/src/shm.cpp
+++ b/src/shm.cpp
@@ -46,6 +46,16 @@
 		std::this_thread::yield();
 	}
 }
+void MutexWithTimeLimit::unlock()
+{
+	auto old_time = last_lock_time_.load();
+	if (Now() - old_time > limit_) {
+	} else {
+		if (last_lock_time_.compare_exchange_strong(old_time, Now())) {
+			mutex_.unlock();
+		}
+	}
+}
 
 SharedMemory::SharedMemory(const std::string &name, const uint64_t size) :
     mshm_t(open_or_create, name.c_str(), size, 0, AllowAll()),

--
Gitblit v1.8.0