Ion
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
spinmutex.h
Go to the documentation of this file.
1 
18 #ifndef ION_BASE_SPINMUTEX_H_
19 #define ION_BASE_SPINMUTEX_H_
20 
21 #include "ion/port/atomic.h"
22 
23 namespace ion {
24 namespace base {
25 
36 class ION_API SpinMutex {
37  public:
38  SpinMutex() : locked_(false) {}
39  ~SpinMutex();
40 
42  bool IsLocked() const { return locked_; }
43 
47  void Lock();
48 
51  bool TryLock();
52 
56  void Unlock();
57 
58  private:
59  std::atomic<bool> locked_;
60 };
61 
62 } // namespace base
63 } // namespace ion
64 
65 #endif // ION_BASE_SPINMUTEX_H_
bool IsLocked() const
Returns whether the Mutex is currently locked. Does not block.
Definition: spinmutex.h:42
SpinMutex exposes the same interface as ion::port::Mutex, but implements locking via a simple atomic ...
Definition: spinmutex.h:36