lichao
2021-04-28 a6f67b4249525089fb97eb9418c7014f66c2a000
src/shm.cpp
@@ -21,42 +21,6 @@
namespace bhome_shm
{
bool MutexWithTimeLimit::try_lock()
{
   if (mutex_.try_lock()) {
      auto old_time = last_lock_time_.load();
      if (Now() - old_time > limit_) {
         return last_lock_time_.compare_exchange_strong(old_time, Now());
      } else {
         last_lock_time_.store(Now());
         return true;
      }
   } else {
      auto old_time = last_lock_time_.load();
      if (Now() - old_time > limit_) {
         return last_lock_time_.compare_exchange_strong(old_time, Now());
      } else {
         return false;
      }
   }
}
void MutexWithTimeLimit::lock()
{
   while (!try_lock()) {
      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()),
    name_(name)