#ifndef stack_h #define stack_h 1 #include #include #include using namespace std::chrono_literals; template class stack { public: void push(T t) { std::scoped_lock lock(mutex); container.push(t); } std::optional pop() { std::scoped_lock lock(mutex); if (!container.empty()) { auto data = container.top(); container.pop(); return data; } else { return std::nullopt; } } private: std::mutex mutex; std::stack container; }; #endif // stack_h