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)); }
63#define __CIFTI_MUTEX_H_HAVE_IMPL__
69 typedef QMutex CiftiMutex;
70 typedef QMutexLocker CiftiMutexLocker;
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(); }
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"
namespace for all CiftiLib functionality
Definition CiftiBrainModelsMap.h:42