diff --git a/utils/sync/spinlock.hpp b/utils/sync/spinlock.hpp new file mode 100644 index 000000000..bc46e63b8 --- /dev/null +++ b/utils/sync/spinlock.hpp @@ -0,0 +1,25 @@ +#ifndef MEMGRAPH_UTILS_SYNC_SPINLOCK_HPP +#define MEMGRAPH_UTILS_SYNC_SPINLOCK_HPP + +#include +#include + +class SpinLock +{ +public: + void acquire() + { + while(lock.test_and_set(std::memory_order_acquire)) + usleep(250); + } + + void release() + { + lock.clear(std::memory_order_release); + } + +private: + std::atomic_flag lock; +}; + +#endif