]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/common/umutex.c
ICU-400.42.tar.gz
[apple/icu.git] / icuSources / common / umutex.c
index 22396f5e1d9d942182509ace0a82df684b6c0b05..23eca46a600948030ad08cd0964de928690d930f 100644 (file)
@@ -1,7 +1,7 @@
 /*
 ******************************************************************************
 *
-*   Copyright (C) 1997-2006, International Business Machines
+*   Copyright (C) 1997-2008, International Business Machines
 *   Corporation and others.  All Rights Reserved.
 *
 ******************************************************************************
 #if defined(U_DARWIN)
 #include <AvailabilityMacros.h>
 #if (ICU_USE_THREADS == 1) && defined(MAC_OS_X_VERSION_10_4) && defined(MAC_OS_X_VERSION_MIN_REQUIRED) && (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4)
+#if defined(__STRICT_ANSI__)
+#define UPRV_REMAP_INLINE
+#define inline
+#endif
 #include <libkern/OSAtomic.h>
 #define USE_MAC_OS_ATOMIC_INCREMENT 1
+#if defined(UPRV_REMAP_INLINE)
+#undef inline
+#undef UPRV_REMAP_INLINE
+#endif
 #endif
 #endif
 
@@ -90,7 +98,7 @@
  *
  */ 
 
-#define  MAX_MUTEXES  30
+#define  MAX_MUTEXES  40
 static UMTX              gGlobalMutex          = NULL;
 static UMTX              gIncDecMutex          = NULL;       
 #if (ICU_USE_THREADS == 1)
@@ -343,6 +351,11 @@ static void initGlobalMutex() {
         }
         gMutexPoolInitialized = TRUE;
     }
+#elif defined (U_DARWIN)
+    /* PTHREAD_MUTEX_INITIALIZER works, don't need to call pthread_mutex_init
+     * as below (which is subject to a race condition)
+     */
+    gMutexPoolInitialized = TRUE;
 #elif defined (POSIX)
     /*  TODO:  experimental code.  Shouldn't need to explicitly init the mutexes. */
     if (gMutexPoolInitialized == FALSE) {