35 std::atomic<int> m_val;
37 Atomic() : m_val(0) {}
38 Atomic(
int val) : m_val(val) {}
41 return m_val.load(std::memory_order_acquire);
49 m_val.store(val, std::memory_order_release);
51 int operator=(
int val)
56 int add_fetch(
int amount)
58 return m_val.fetch_add(amount, std::memory_order_acq_rel) + amount;
64 int sub_fetch(
int amount)
66 return m_val.fetch_sub(amount, std::memory_order_acq_rel) - amount;