Line data Source code
1 : #pragma once 2 : 3 : #include <atomic> 4 : 5 : namespace pa { 6 : 7 : class AtomicStopSignal { 8 : public: 9 20020 : AtomicStopSignal() = default; 10 0 : AtomicStopSignal(const AtomicStopSignal &) : AtomicStopSignal() {} 11 : AtomicStopSignal &operator=(const AtomicStopSignal &) = delete; 12 8 : AtomicStopSignal(AtomicStopSignal &&) : AtomicStopSignal() {} 13 : AtomicStopSignal &operator=(AtomicStopSignal &&) { return *this; } 14 : 15 0 : void stop() { stop_flag.store(true, std::memory_order_relaxed); } 16 200599 : bool stop_requested() const { 17 200599 : return stop_flag.load(std::memory_order_relaxed); 18 : } 19 : 20 : private: 21 10010 : std::atomic<bool> stop_flag{false}; 22 : }; 23 : 24 : } // namespace pa