From db322f33ba13592f2492317e3f1a070454c97059 Mon Sep 17 00:00:00 2001
From: lichao <lichao@aiotlink.com>
Date: 星期四, 13 五月 2021 19:34:46 +0800
Subject: [PATCH] center alloc all msgs.

---
 src/robust.cpp |   16 +++++++++++-----
 1 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/robust.cpp b/src/robust.cpp
index 26d41b9..4654652 100644
--- a/src/robust.cpp
+++ b/src/robust.cpp
@@ -35,24 +35,30 @@
 
 bool FMutex::try_lock()
 {
-	if (mtx_.try_lock()) {
-		if (flock(fd_, LOCK_EX | LOCK_NB) == 0) {
+	if (flock(fd_, LOCK_EX | LOCK_NB) == 0) {
+		++count_;
+		if (mtx_.try_lock()) {
 			return true;
 		} else {
-			mtx_.unlock();
+			if (--count_ == 0) {
+				flock(fd_, LOCK_UN);
+			}
 		}
 	}
 	return false;
 }
 void FMutex::lock()
 {
-	mtx_.lock();
 	flock(fd_, LOCK_EX);
+	++count_;
+	mtx_.lock();
 }
 void FMutex::unlock()
 {
-	flock(fd_, LOCK_UN);
 	mtx_.unlock();
+	if (--count_ == 0) {
+		flock(fd_, LOCK_UN);
+	}
 }
 
 } // namespace robust
\ No newline at end of file

--
Gitblit v1.8.0