7 #ifndef PXR_BASE_ARCH_THREADS_H
8 #define PXR_BASE_ARCH_THREADS_H
20 #ifdef ARCH_COMPILER_MSVC
37 #if defined(ARCH_CPU_INTEL)
38 #if defined(ARCH_COMPILER_GCC) || defined(ARCH_COMPILER_CLANG)
39 #define ARCH_SPIN_PAUSE() __builtin_ia32_pause()
40 #elif defined(ARCH_COMPILER_MSVC)
41 #define ARCH_SPIN_PAUSE() _mm_pause()
43 #elif defined(ARCH_CPU_ARM)
44 #if defined(ARCH_COMPILER_GCC) || defined(ARCH_COMPILER_CLANG)
45 #define ARCH_SPIN_PAUSE() asm volatile ("yield" ::: "memory")
46 #elif defined(ARCH_COMPILER_MSVC)
47 #define ARCH_SPIN_PAUSE() __yield();
50 #define ARCH_SPIN_PAUSE()
55 #endif // PXR_BASE_ARCH_THREADS_H
ARCH_API std::thread::id ArchGetMainThreadId()
PXR_NAMESPACE_OPEN_SCOPE ARCH_API bool ArchIsMainThread()
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
#define PXR_NAMESPACE_CLOSE_SCOPE