1 #ifndef HALIDE_RUNTIME_SCOPED_MUTEX_LOCK_H 2 #define HALIDE_RUNTIME_SCOPED_MUTEX_LOCK_H 3 4 #include "HalideRuntime.h" 5 6 namespace Halide { 7 namespace Runtime { 8 namespace Internal { 9 10 // An RAII mutex locking operation 11 struct ScopedMutexLock { 12 halide_mutex *mutex; 13 ScopedMutexLockScopedMutexLock14 ALWAYS_INLINE ScopedMutexLock(halide_mutex *mutex) 15 : mutex(mutex) { 16 halide_mutex_lock(mutex); 17 } 18 ~ScopedMutexLockScopedMutexLock19 ALWAYS_INLINE ~ScopedMutexLock() { 20 halide_mutex_unlock(mutex); 21 } 22 }; 23 24 } // namespace Internal 25 } // namespace Runtime 26 } // namespace Halide 27 28 #endif 29