Halide 22.0.0 Halide compiler and libraries

scoped_mutex_lock.h
Go to the documentation of this file.
1#ifndef HALIDE_RUNTIME_SCOPED_MUTEX_LOCK_H
2#define HALIDE_RUNTIME_SCOPED_MUTEX_LOCK_H
3
4#include "HalideRuntime.h"
5
6namespace Halide {
7namespace Runtime {
8namespace Internal {
9
10// An RAII mutex locking operation
11 struct ScopedMutexLock {
12 halide_mutex *mutex;
13
14 ALWAYS_INLINE explicit ScopedMutexLock(halide_mutex *mutex)
15 : mutex(mutex) {
16 halide_mutex_lock(mutex);
17 }
18
19 ALWAYS_INLINE ~ScopedMutexLock() {
20 halide_mutex_unlock(mutex);
21 }
22};
23
24} // namespace Internal
25} // namespace Runtime
26} // namespace Halide
27
28#endif
HalideRuntime.h
This file declares the routines used by Halide internally in its runtime.
halide_mutex_lock
void halide_mutex_lock(struct halide_mutex *mutex)
A basic set of mutex and condition variable functions, which call platform specific code for mutual e...
Definition: synchronization_common.h:876
halide_mutex_unlock
void halide_mutex_unlock(struct halide_mutex *mutex)
Definition: synchronization_common.h:882
Halide
This file defines the class FunctionDAG, which is our representation of a Halide pipeline,...
Definition: AbstractGenerator.h:19
Halide::LinkageType::Internal
@ Internal
Not visible externally, similar to 'static' linkage in C.
ALWAYS_INLINE
#define ALWAYS_INLINE
Definition: runtime_internal.h:57
Halide::Runtime::Internal::ScopedMutexLock
Definition: scoped_mutex_lock.h:11
Halide::Runtime::Internal::ScopedMutexLock::~ScopedMutexLock
ALWAYS_INLINE ~ScopedMutexLock()
Definition: scoped_mutex_lock.h:19
Halide::Runtime::Internal::ScopedMutexLock::mutex
halide_mutex * mutex
Definition: scoped_mutex_lock.h:12
Halide::Runtime::Internal::ScopedMutexLock::ScopedMutexLock
ALWAYS_INLINE ScopedMutexLock(halide_mutex *mutex)
Definition: scoped_mutex_lock.h:14
halide_mutex
Cross-platform mutex.
Definition: HalideRuntime.h:191