16 #ifdef MRPT_OS_WINDOWS    18 #elif defined( __clang__ ) && defined( MRPT_OS_APPLE )    20 #elif defined( __GNUC__ )    21         #if ( __GNUC__ * 100 + __GNUC_MINOR__ >= 402 )    22         #  include <ext/atomicity.h>    24         #  include <bits/atomicity.h>    27         #error This is not Windows and compiler is not GCC: Non implemented atomic_incr for this case    31 #ifdef MRPT_OS_WINDOWS    39                 return InterlockedDecrement(&
m_value);
    44                 return static_cast<long const volatile &
>( 
m_value );
    49         #if ( defined( __i386__ ) || defined( __x86_64__ ) )    62                 int my_atomic_exchange_and_add( 
int * pw, 
int dv )
    72                                 "+m"( *pw ), 
"=r"( 
r ): 
    81                         return my_atomic_exchange_and_add( &
m_value, -1 ) - 1;
    86                         return my_atomic_exchange_and_add( &
m_value, 0 );
    90                 #if defined(__GLIBCXX__) // g++ 3.4+    91                 using __gnu_cxx::__atomic_add;
    92                 using __gnu_cxx::__exchange_and_add;
   102                         return __exchange_and_add(&
m_value, -1) - 1;
   107                         return __exchange_and_add(&
m_value, 0);
 void operator++()
Atomic increment of value. 
 
This namespace provides multitask, synchronization utilities. 
 
GLdouble GLdouble GLdouble r
 
atomic_num_t operator--()
Atomic decrement of value and return new value.