18 #ifndef MAGICKCORE_MUTEX_H
19 #define MAGICKCORE_MUTEX_H
21 #if defined(__cplusplus) || defined(c_plusplus)
33 #if defined(MAGICKCORE_OPENMP_SUPPORT)
38 translation_unit_mutex;
39 #elif defined(MAGICKCORE_THREAD_SUPPORT)
40 static pthread_mutex_t
41 translation_unit_mutex = PTHREAD_MUTEX_INITIALIZER;
42 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
44 translation_unit_mutex = 0;
49 #if defined(MAGICKCORE_OPENMP_SUPPORT)
50 omp_destroy_lock(&translation_unit_mutex);
57 #if defined(MAGICKCORE_OPENMP_SUPPORT)
58 omp_init_lock(&translation_unit_mutex);
65 #if defined(MAGICKCORE_OPENMP_SUPPORT)
68 omp_set_lock(&translation_unit_mutex);
69 #elif defined(MAGICKCORE_THREAD_SUPPORT)
81 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
82 while (InterlockedCompareExchange(&translation_unit_mutex,1L,0L) != 0)
89 #if defined(MAGICKCORE_OPENMP_SUPPORT)
90 omp_unset_lock(&translation_unit_mutex);
91 #elif defined(MAGICKCORE_THREAD_SUPPORT)
103 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
104 InterlockedExchange(&translation_unit_mutex,0L);
108 #if defined(__cplusplus) || defined(c_plusplus)
#define ThrowFatalException(severity, tag)
Definition: exception-private.h:42
@ ResourceLimitFatalError
Definition: exception.h:78
MagickBooleanType
Definition: magick-type.h:203
@ MagickFalse
Definition: magick-type.h:204
@ MagickTrue
Definition: magick-type.h:205
static void UnlockMagickMutex(void)
Definition: mutex.h:87
static void DestroyMagickMutex(void)
Definition: mutex.h:47
static void LockMagickMutex(void)
Definition: mutex.h:63
static void InitializeMagickMutex(void)
Definition: mutex.h:55
#define pthread_mutex_lock
Definition: vms.h:824
#define pthread_mutex_unlock
Definition: vms.h:826