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)