diff --git a/MagickCore/annotate.c b/MagickCore/annotate.c
index 0a985f2..1966cb6 100644
--- a/MagickCore/annotate.c
+++ b/MagickCore/annotate.c
@@ -145,7 +145,8 @@
 */
 MagickPrivate MagickBooleanType AnnotateComponentGenesis(void)
 {
-  annotate_semaphore=AcquireSemaphoreInfo();
+  if (annotate_semaphore == (SemaphoreInfo *) NULL)
+    annotate_semaphore=AcquireSemaphoreInfo();
   return(MagickTrue);
 }
 
diff --git a/MagickCore/cache.c b/MagickCore/cache.c
index 4e0a0c6..204f129 100644
--- a/MagickCore/cache.c
+++ b/MagickCore/cache.c
@@ -324,7 +324,8 @@
 */
 MagickPrivate MagickBooleanType CacheComponentGenesis(void)
 {
-  cache_semaphore=AcquireSemaphoreInfo();
+  if (cache_semaphore == (SemaphoreInfo *) NULL)
+    cache_semaphore=AcquireSemaphoreInfo();
   return(MagickTrue);
 }
 
diff --git a/MagickCore/coder.c b/MagickCore/coder.c
index abf84ac..c34b728 100644
--- a/MagickCore/coder.c
+++ b/MagickCore/coder.c
@@ -379,7 +379,8 @@
 */
 MagickPrivate MagickBooleanType CoderComponentGenesis(void)
 {
-  coder_semaphore=AcquireSemaphoreInfo();
+  if (coder_semaphore == (SemaphoreInfo *) NULL)
+    coder_semaphore=AcquireSemaphoreInfo();
   return(MagickTrue);
 }
 
diff --git a/MagickCore/color.c b/MagickCore/color.c
index 3c21b09..0288676 100644
--- a/MagickCore/color.c
+++ b/MagickCore/color.c
@@ -915,7 +915,8 @@
 */
 MagickPrivate MagickBooleanType ColorComponentGenesis(void)
 {
-  color_semaphore=AcquireSemaphoreInfo();
+  if (color_semaphore == (SemaphoreInfo *) NULL)
+    color_semaphore=AcquireSemaphoreInfo();
   return(MagickTrue);
 }
 
diff --git a/MagickCore/configure.c b/MagickCore/configure.c
index 9f19151..dd984b8 100644
--- a/MagickCore/configure.c
+++ b/MagickCore/configure.c
@@ -234,7 +234,8 @@
 */
 MagickPrivate MagickBooleanType ConfigureComponentGenesis(void)
 {
-  configure_semaphore=AcquireSemaphoreInfo();
+  if (configure_semaphore == (SemaphoreInfo *) NULL)
+    configure_semaphore=AcquireSemaphoreInfo();
   return(MagickTrue);
 }
 
diff --git a/MagickCore/delegate.c b/MagickCore/delegate.c
index 9274015..c393949 100644
--- a/MagickCore/delegate.c
+++ b/MagickCore/delegate.c
@@ -227,7 +227,8 @@
 */
 MagickPrivate MagickBooleanType DelegateComponentGenesis(void)
 {
-  delegate_semaphore=AcquireSemaphoreInfo();
+  if (delegate_semaphore == (SemaphoreInfo *) NULL)
+    delegate_semaphore=AcquireSemaphoreInfo();
   return(MagickTrue);
 }
 
diff --git a/MagickCore/locale.c b/MagickCore/locale.c
index 02626ea..866b21d 100644
--- a/MagickCore/locale.c
+++ b/MagickCore/locale.c
@@ -1404,7 +1404,8 @@
 */
 MagickPrivate MagickBooleanType LocaleComponentGenesis(void)
 {
-  locale_semaphore=AcquireSemaphoreInfo();
+  if (locale_semaphore == (SemaphoreInfo *) NULL)
+    locale_semaphore=AcquireSemaphoreInfo();
   return(MagickTrue);
 }
 
diff --git a/MagickCore/log.c b/MagickCore/log.c
index 9a7739f..0be742b 100644
--- a/MagickCore/log.c
+++ b/MagickCore/log.c
@@ -798,7 +798,8 @@
   ExceptionInfo
     *exception;
 
-  log_semaphore=AcquireSemaphoreInfo();
+  if (log_semaphore == (SemaphoreInfo *) NULL)
+    log_semaphore=AcquireSemaphoreInfo();
   exception=AcquireExceptionInfo();
   (void) GetLogInfo("*",exception);
   exception=DestroyExceptionInfo(exception);
diff --git a/MagickCore/magic.c b/MagickCore/magic.c
index 44db990..9f57ffc 100644
--- a/MagickCore/magic.c
+++ b/MagickCore/magic.c
@@ -1002,7 +1002,8 @@
 */
 MagickPrivate MagickBooleanType MagicComponentGenesis(void)
 {
-  magic_semaphore=AcquireSemaphoreInfo();
+  if (magic_semaphore == (SemaphoreInfo *) NULL)
+    magic_semaphore=AcquireSemaphoreInfo();
   return(MagickTrue);
 }
 
diff --git a/MagickCore/magick.c b/MagickCore/magick.c
index ebc699a..55cb671 100644
--- a/MagickCore/magick.c
+++ b/MagickCore/magick.c
@@ -1071,7 +1071,8 @@
 */
 MagickPrivate MagickBooleanType MagickComponentGenesis(void)
 {
-  magick_semaphore=AcquireSemaphoreInfo();
+  if (magick_semaphore == (SemaphoreInfo *) NULL)
+    magick_semaphore=AcquireSemaphoreInfo();
   return(MagickTrue);
 }
 
diff --git a/MagickCore/mime.c b/MagickCore/mime.c
index ca0f642..0377803 100644
--- a/MagickCore/mime.c
+++ b/MagickCore/mime.c
@@ -1042,7 +1042,8 @@
 */
 MagickPrivate MagickBooleanType MimeComponentGenesis(void)
 {
-  mime_semaphore=AcquireSemaphoreInfo();
+  if (mime_semaphore == (SemaphoreInfo *) NULL)
+    mime_semaphore=AcquireSemaphoreInfo();
   return(MagickTrue);
 }
 
diff --git a/MagickCore/module.c b/MagickCore/module.c
index 22d74dd..94acdd4 100644
--- a/MagickCore/module.c
+++ b/MagickCore/module.c
@@ -1149,7 +1149,8 @@
   MagickBooleanType
     status;
 
-  module_semaphore=AcquireSemaphoreInfo();
+  if (module_semaphore == (SemaphoreInfo *) NULL)
+    module_semaphore=AcquireSemaphoreInfo();
   exception=AcquireExceptionInfo();
   status=IsModuleTreeInstantiated(exception);
   exception=DestroyExceptionInfo(exception);
diff --git a/MagickCore/policy.c b/MagickCore/policy.c
index 4dfd099..f190e49 100644
--- a/MagickCore/policy.c
+++ b/MagickCore/policy.c
@@ -951,7 +951,8 @@
 */
 MagickPrivate MagickBooleanType PolicyComponentGenesis(void)
 {
-  policy_semaphore=AcquireSemaphoreInfo();
+  if (policy_semaphore == (SemaphoreInfo *) NULL)
+    policy_semaphore=AcquireSemaphoreInfo();
   return(MagickTrue);
 }
 
diff --git a/MagickCore/random.c b/MagickCore/random.c
index 07e1846..416f9ef 100644
--- a/MagickCore/random.c
+++ b/MagickCore/random.c
@@ -738,7 +738,8 @@
 */
 MagickPrivate MagickBooleanType RandomComponentGenesis(void)
 {
-  random_semaphore=AcquireSemaphoreInfo();
+  if (random_semaphore == (SemaphoreInfo *) NULL)
+    random_semaphore=AcquireSemaphoreInfo();
   return(MagickTrue);
 }
 
diff --git a/MagickCore/registry.c b/MagickCore/registry.c
index fc228f1..b8af0ac 100644
--- a/MagickCore/registry.c
+++ b/MagickCore/registry.c
@@ -297,7 +297,8 @@
 */
 MagickPrivate MagickBooleanType RegistryComponentGenesis(void)
 {
-  registry_semaphore=AcquireSemaphoreInfo();
+  if (registry_semaphore == (SemaphoreInfo *) NULL)
+    registry_semaphore=AcquireSemaphoreInfo();
   return(MagickTrue);
 }
 
diff --git a/MagickCore/resource.c b/MagickCore/resource.c
index ff8bf6f..b28af7d 100644
--- a/MagickCore/resource.c
+++ b/MagickCore/resource.c
@@ -967,7 +967,8 @@
   /*
     Set Magick resource limits.
   */
-  resource_semaphore=AcquireSemaphoreInfo();
+  if (resource_semaphore == (SemaphoreInfo *) NULL)
+    resource_semaphore=AcquireSemaphoreInfo();
   pagesize=GetMagickPageSize();
   pages=(-1);
 #if defined(MAGICKCORE_HAVE_SYSCONF) && defined(_SC_PHYS_PAGES)
diff --git a/MagickCore/type.c b/MagickCore/type.c
index f968d4c..61014d4 100644
--- a/MagickCore/type.c
+++ b/MagickCore/type.c
@@ -1362,7 +1362,8 @@
 */
 MagickPrivate MagickBooleanType TypeComponentGenesis(void)
 {
-  type_semaphore=AcquireSemaphoreInfo();
+  if (type_semaphore == (SemaphoreInfo *) NULL)
+    type_semaphore=AcquireSemaphoreInfo();
   return(MagickTrue);
 }