/* * ===================================================================================== * * Filename: robust.cpp * * Description: * * Version: 1.0 * Created: 2021年04月27日 10时04分19秒 * Revision: none * Compiler: gcc * * Author: Li Chao (), lichao@aiotlink.com * Organization: * * ===================================================================================== */ #include "robust.h" #include #include namespace robust { namespace { static_assert(sizeof(steady_clock::duration) == sizeof(int64_t)); auto Now() { return steady_clock::now().time_since_epoch(); } void Yield() { std::this_thread::sleep_for(10us); } } // namespace void QuickSleep() { Yield(); } bool FMutex::try_lock() { if (mtx_.try_lock()) { if (flock(fd_, LOCK_EX | LOCK_NB) == 0) { return true; } else { mtx_.unlock(); } } return false; } void FMutex::lock() { mtx_.lock(); flock(fd_, LOCK_EX); } void FMutex::unlock() { flock(fd_, LOCK_UN); mtx_.unlock(); } } // namespace robust