27#ifndef G2O_OPENMP_MUTEX
28#define G2O_OPENMP_MUTEX
49 OpenMPMutex() { omp_init_lock(&_lock); }
51 ~OpenMPMutex() { omp_destroy_lock(&_lock); }
53 void lock() { omp_set_lock(&_lock); }
55 void unlock() { omp_unset_lock(&_lock); }
73 OpenMPMutex() : _cnt(0) {}
75 ~OpenMPMutex() { assert(_cnt == 0 &&
"Freeing locked mutex");}
76 void lock() { assert(++_cnt == 1 &&
"Locking already locked mutex");}
77 void unlock() { assert(--_cnt == 0 &&
"Trying to unlock a mutex which is not locked");}
89 class ScopedOpenMPMutex
92 explicit ScopedOpenMPMutex(
OpenMPMutex* mutex) : _mutex(mutex) { _mutex->lock(); }
93 ~ScopedOpenMPMutex() { _mutex->unlock(); }
96 ScopedOpenMPMutex(
const ScopedOpenMPMutex&);
97 void operator=(
const ScopedOpenMPMutex&);
Dummy mutex for non-OpenMP builds.
The primary namespace for the NDEVR SDK.