]> granicus.if.org Git - imagemagick/blobdiff - MagickCore/semaphore-private.h
(no commit message)
[imagemagick] / MagickCore / semaphore-private.h
index f3fe50418592120bd052d77ac8958a21e368e278..182cfc8191197a5ee28c7374499a568d84236685 100644 (file)
@@ -28,15 +28,15 @@ extern MagickPrivate MagickBooleanType
 extern MagickPrivate void
   SemaphoreComponentTerminus(void);
 
-#if defined(MAGICKCORE_THREAD_SUPPORT)
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+static omp_lock_t
+  semaphore_mutex;
+#elif defined(MAGICKCORE_THREAD_SUPPORT)
 static pthread_mutex_t
   semaphore_mutex = PTHREAD_MUTEX_INITIALIZER;
 #elif defined(MAGICKCORE_HAVE_WINTHREADS)
 static LONG
   semaphore_mutex = 0;
-#elif defined(MAGICKCORE_OPENMP_SUPPORT)
-static omp_lock_t
-  semaphore_mutex;
 #else
 static ssize_t
   semaphore_mutex = 0;
@@ -47,37 +47,27 @@ static MagickBooleanType
 
 static inline void DestroyMagickMutex(void)
 {
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
   if (active_mutex != MagickFalse)
-    {
-#if defined(MAGICKCORE_THREAD_SUPPORT)
-      ;
-#elif defined(MAGICKCORE_HAVE_WINTHREADS)
-      DeleteCriticalSection(&semaphore_mutex);
-#elif defined(MAGICKCORE_OPENMP_SUPPORT)
-      omp_destroy_lock(&semaphore_mutex);
+    omp_destroy_lock(&semaphore_mutex);
 #endif
-    }
   active_mutex=MagickFalse;
 }
 
 static inline void InitializeMagickMutex(void)
 {
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
   if (active_mutex == MagickFalse)
-    {
-#if defined(MAGICKCORE_THREAD_SUPPORT)
-      ;
-#elif defined(MAGICKCORE_HAVE_WINTHREADS)
-      InitializeCriticalSection(&semaphore_mutex);
-#elif defined(MAGICKCORE_OPENMP_SUPPORT)
-      omp_init_lock(&semaphore_mutex);
+    omp_init_lock(&semaphore_mutex);
 #endif
-    }
   active_mutex=MagickTrue;
 }
 
 static inline void LockMagickMutex(void)
 {
-#if defined(MAGICKCORE_THREAD_SUPPORT)
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  omp_set_lock(&semaphore_mutex);
+#elif defined(MAGICKCORE_THREAD_SUPPORT)
   {
     int
       status;
@@ -92,14 +82,14 @@ static inline void LockMagickMutex(void)
 #elif defined(MAGICKCORE_HAVE_WINTHREADS)
   while (InterlockedCompareExchange(&semaphore_mutex,1L,0L) != 0)
     Sleep(10);
-#if defined(MAGICKCORE_OPENMP_SUPPORT)
-  omp_set_lock(&semaphore_mutex);
 #endif
 }
 
 static inline void UnlockMagickMutex(void)
 {
-#if defined(MAGICKCORE_THREAD_SUPPORT)
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  omp_unset_lock(&semaphore_mutex);
+#elif defined(MAGICKCORE_THREAD_SUPPORT)
   {
     int
       status;
@@ -113,8 +103,6 @@ static inline void UnlockMagickMutex(void)
   }
 #elif defined(MAGICKCORE_HAVE_WINTHREADS)
   InterlockedExchange(&semaphore_mutex,0L);
-#elif defined(MAGICKCORE_OPENMP_SUPPORT)
-  omp_unset_lock(&semaphore_mutex);
 #endif
 }