/* ----------------------------------------------------------------------------- GSFramework Copyright 2001-2013 Emmanuel Julien. All Rights Reserved. ----------------------------------------------------------------------------- */ #ifndef __ATOMIC_VALUE__ #define __ATOMIC_VALUE__ namespace GS { namespace Threading { /*! @short 32bit atomic value. @author Emmanuel Julien (ejulien@owloh.com) */ class Atomic32 { void *v; public: /// Perform atomic increment, return the new value. int Inc(); /// Perform atomic decrement, return the new value. int Dec(); /// Return the current value. int Get() const; /// Set new value, return the initial value. int Set(int); /*! @short Perform an atomic compare and swap operation. Compare the current value with the comparand, if they match set the new value. Return the initial value. */ int Cas(int comparand, int value); explicit Atomic32(int value = 0); ~Atomic32(); }; } // Threading } // GS #endif // __ATOMIC_VALUE__