Files
salmanoff/include/spinLock.h
T
hayodea 0733bb9a68 Locking: add SpinLock class
Nothing much to add: add a spinlock which has a tryAcquire method.
This will be used as a primitive for building our spinQing locking
system.
2025-09-17 16:28:07 -04:00

36 lines
424 B
C++

#ifndef SPIN_LOCK_H
#define SPIN_LOCK_H
#include <atomic>
namespace smo {
/**
* @brief Simple spinlock using std::atomic
*/
class SpinLock
{
public:
SpinLock()
: locked(false)
{}
bool tryAcquire()
{
bool expected = false;
return locked.compare_exchange_strong(expected, true);
}
void release()
{
locked.store(false);
}
private:
std::atomic<bool> locked;
};
} // namespace smo
#endif // SPIN_LOCK_H