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