18 #ifndef MAGICKCORE_MUTEX_H
19 #define MAGICKCORE_MUTEX_H
21 #if defined(__cplusplus) || defined(c_plusplus)
33 #if defined(MAGICKCORE_OPENMP_SUPPORT)
35 translation_unit_mutex;
36 #elif defined(MAGICKCORE_THREAD_SUPPORT)
37 static pthread_mutex_t
38 translation_unit_mutex = PTHREAD_MUTEX_INITIALIZER;
39 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
41 translation_unit_mutex = 0;
46 #if defined(MAGICKCORE_OPENMP_SUPPORT)
47 omp_destroy_lock(&translation_unit_mutex);
53 #if defined(MAGICKCORE_OPENMP_SUPPORT)
54 omp_init_lock(&translation_unit_mutex);
60 #if defined(MAGICKCORE_OPENMP_SUPPORT)
61 omp_set_lock(&translation_unit_mutex);
62 #elif defined(MAGICKCORE_THREAD_SUPPORT)
74 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
75 while (InterlockedCompareExchange(&translation_unit_mutex,1L,0L) != 0)
82 #if defined(MAGICKCORE_OPENMP_SUPPORT)
83 omp_unset_lock(&translation_unit_mutex);
84 #elif defined(MAGICKCORE_THREAD_SUPPORT)
96 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
97 InterlockedExchange(&translation_unit_mutex,0L);
101 #if defined(__cplusplus) || defined(c_plusplus)
static void InitializeMagickMutex(void)
Definition: mutex.h:51
#define ThrowFatalException(severity, tag)
Definition: exception-private.h:42
#define pthread_mutex_lock
Definition: vms.h:824
Definition: exception.h:78
static void UnlockMagickMutex(void)
Definition: mutex.h:80
#define pthread_mutex_unlock
Definition: vms.h:826
static void LockMagickMutex(void)
Definition: mutex.h:58
static void DestroyMagickMutex(void)
Definition: mutex.h:44