Chatterino
Atomic.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <boost/noncopyable.hpp>
4 #include <mutex>
5 
6 namespace chatterino {
7 
8 template <typename T>
9 class Atomic : boost::noncopyable
10 {
11 public:
13  {
14  }
15 
16  Atomic(T &&val)
17  : value_(val)
18  {
19  }
20 
21  T get() const
22  {
23  std::lock_guard<std::mutex> guard(this->mutex_);
24 
25  return this->value_;
26  }
27 
28  void set(const T &val)
29  {
30  std::lock_guard<std::mutex> guard(this->mutex_);
31 
32  this->value_ = val;
33  }
34 
35  void set(T &&val)
36  {
37  std::lock_guard<std::mutex> guard(this->mutex_);
38 
39  this->value_ = std::move(val);
40  }
41 
42 private:
43  mutable std::mutex mutex_;
44  T value_;
45 };
46 
47 } // namespace chatterino
Definition: Application.cpp:48
Atomic(T &&val)
Definition: Atomic.hpp:16
Atomic()
Definition: Atomic.hpp:12
Definition: Atomic.hpp:9