00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00018
00019 #ifndef NET_INSTAWEB_UTIL_PUBLIC_ATOMIC_BOOL_H_
00020 #define NET_INSTAWEB_UTIL_PUBLIC_ATOMIC_BOOL_H_
00021
00022 #include "net/instaweb/util/public/atomicops.h"
00023 #include "net/instaweb/util/public/basictypes.h"
00024
00025 namespace net_instaweb {
00026
00031 class AtomicBool {
00032 public:
00034 AtomicBool() {
00035 set_value(false);
00036 }
00037
00038 ~AtomicBool() {}
00039
00040 bool value() const {
00041 return base::subtle::Acquire_Load(&value_);
00042 }
00043
00044 void set_value(bool v) {
00045 base::subtle::Release_Store(&value_, v);
00046 }
00047
00048 private:
00049 base::subtle::AtomicWord value_;
00050 DISALLOW_COPY_AND_ASSIGN(AtomicBool);
00051 };
00052
00053
00054 }
00055
00056 #endif ///< NET_INSTAWEB_UTIL_PUBLIC_ATOMIC_BOOL_H_