#ifndef MEMGRAPH_DATA_STRUCTURES_SPINLOCK_STACK_HPP #define MEMGRAPH_DATA_STRUCTURES_SPINLOCK_STACK_HPP #include <stack> #include "threading/sync/spinlock.hpp" #include "threading/sync/lockable.hpp" template <class T> class SpinLockStack : Lockable<SpinLock> { public: T pop() { auto guard = acquire(); T elem = stack.top(); stack.pop(); return elem; } void push(const T& elem) { auto guard = acquire(); stack.push(elem); } private: std::stack<T> stack; }; #endif