X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=folly%2FSpinLock.h;h=b87e58a6ed074415bd230dd21157f06dbb74078e;hb=d9acfc9e4d3f94c3470df9b45c7f0b6c172e8c23;hp=ef35a48578aae405d838628f306270bfd22a7688;hpb=ed8c80a0e0988e4ce687f51ca832a00e4a6b7930;p=folly.git diff --git a/folly/SpinLock.h b/folly/SpinLock.h index ef35a485..b87e58a6 100644 --- a/folly/SpinLock.h +++ b/folly/SpinLock.h @@ -34,19 +34,29 @@ #include -#include +#include +#include namespace folly { -#if __x86_64__ -typedef SpinLockMslImpl SpinLock; -#elif __APPLE__ -typedef SpinLockAppleImpl SpinLock; -#elif FOLLY_HAVE_PTHREAD_SPINLOCK_T -typedef SpinLockPthreadImpl SpinLock; -#else -typedef SpinLockPthreadMutexImpl SpinLock; -#endif +class SpinLock { + public: + FOLLY_ALWAYS_INLINE SpinLock() { + lock_.init(); + } + FOLLY_ALWAYS_INLINE void lock() const { + lock_.lock(); + } + FOLLY_ALWAYS_INLINE void unlock() const { + lock_.unlock(); + } + FOLLY_ALWAYS_INLINE bool try_lock() const { + return lock_.try_lock(); + } + + private: + mutable folly::MicroSpinLock lock_; +}; template class SpinLockGuardImpl : private boost::noncopyable {