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