1 #ifndef __CIFTI_MUTEX_H__ 2 #define __CIFTI_MUTEX_H__ 32 #define __CIFTI_MUTEX_H_HAVE_IMPL__ 42 CiftiMutex(
const CiftiMutex&) { omp_init_lock(&m_lock); };
43 CiftiMutex& operator=(
const CiftiMutex&) {
return *
this; };
44 CiftiMutex() { omp_init_lock(&m_lock); }
45 ~CiftiMutex() { omp_destroy_lock(&m_lock); }
46 friend class CiftiMutexLocker;
49 class CiftiMutexLocker
53 CiftiMutexLocker& operator=(
const CiftiMutexLocker& rhs);
55 CiftiMutexLocker(CiftiMutex* mutex) { m_mutex = mutex; omp_set_lock(&(m_mutex->m_lock)); }
56 ~CiftiMutexLocker() { omp_unset_lock(&(m_mutex->m_lock)); }
62 #ifdef CIFTILIB_USE_QT 63 #define __CIFTI_MUTEX_H_HAVE_IMPL__ 69 typedef QMutex CiftiMutex;
70 typedef QMutexLocker CiftiMutexLocker;
73 #endif //CIFTILIB_USE_QT 75 #ifdef CIFTILIB_USE_XMLPP 76 #define __CIFTI_MUTEX_H_HAVE_IMPL__ 78 #include <glibmm/thread.h> 82 typedef Glib::Mutex CiftiMutex;
85 class CiftiMutexLocker
89 CiftiMutexLocker& operator=(
const CiftiMutexLocker& rhs);
91 CiftiMutexLocker(CiftiMutex* mutex) { m_mutex = mutex; m_mutex->lock(); }
92 ~CiftiMutexLocker() { m_mutex->unlock(); }
96 #endif //CIFTILIB_USE_XMLPP 101 #ifndef __CIFTI_MUTEX_H_HAVE_IMPL__ 102 #error "you must have openmp support, or define either CIFTILIB_USE_QT or CIFTILIB_USE_XMLPP to select what mutex implementation to use" 105 #endif //__CIFTI_MUTEX_H__ namespace for all CiftiLib functionality
Definition: CiftiBrainModelsMap.h:41