26 #elif defined(__APPLE__)
28 #include <AvailabilityMacros.h>
29 #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1050
30 #include <libkern/OSAtomic.h>
33 #elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
34 #if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 2))
35 # include <ext/atomicity.h>
37 # include <bits/atomicity.h>
46 #if defined(__GLIBCXX__) // g++ 3.4+
48 using __gnu_cxx::__exchange_and_add;
71 #if defined(WIN32) || defined(_WIN32)
72 static LONG itkTimeStampTime = 0;
73 m_ModifiedTime = (
unsigned long)InterlockedIncrement(&itkTimeStampTime);
76 #elif defined(__APPLE__) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1050)
82 static volatile int64_t itkTimeStampTime = 0;
83 m_ModifiedTime = (
unsigned long)OSAtomicIncrement64Barrier(&itkTimeStampTime);
85 static volatile int32_t itkTimeStampTime = 0;
86 m_ModifiedTime = (
unsigned long)OSAtomicIncrement32Barrier(&itkTimeStampTime);
90 #elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
94 static volatile _Atomic_word itkTimeStampTime = 1;
95 m_ModifiedTime = (
unsigned long)__exchange_and_add(&itkTimeStampTime, 1);
102 static unsigned long itkTimeStampTime = 0;
107 TimeStampMutex.
Lock();
108 m_ModifiedTime = ++itkTimeStampTime;