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