Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00013 #ifndef ATOMIC_VARIABLE_H
00014 #define ATOMIC_VARIABLE_H
00015
00020 template<typename T>
00021 class atomic_variable {
00022 public:
00023 atomic_variable(T t) : v(t) {}
00025 atomic_variable() {}
00026
00027 T read() {
00028 boost::unique_lock<boost::mutex> lock(m_mut);
00029 return v;
00030 }
00031
00032 void write(T t) {
00033 boost::unique_lock<boost::mutex> lock(m_mut);
00034 v = t;
00035 }
00036
00037 T operator++(int) {
00038 boost::unique_lock<boost::mutex> lock(m_mut);
00039 return v++;
00040 }
00041 T operator--(int) {
00042 boost::unique_lock<boost::mutex> lock(m_mut);
00043 return v--;
00044 }
00045 private:
00046 T v;
00047 boost::mutex m_mut;
00048 };
00049
00050 #endif // ATOMIC_VARIABLE_H