18 #ifndef MAGICKCORE_THREAD_PRIVATE_H 19 #define MAGICKCORE_THREAD_PRIVATE_H 26 #if defined(__cplusplus) || defined(c_plusplus) 34 #define magick_number_threads(source,destination,chunk,multithreaded) \ 35 num_threads((multithreaded) == 0 ? 1 : \ 36 ((GetImagePixelCacheType(source) != MemoryCache) && \ 37 (GetImagePixelCacheType(source) != MapCache)) || \ 38 ((GetImagePixelCacheType(destination) != MemoryCache) && \ 39 (GetImagePixelCacheType(destination) != MapCache)) ? \ 40 MagickMax(MagickMin(GetMagickResourceLimit(ThreadResource),2),1) : \ 41 MagickMax(MagickMin((ssize_t) GetMagickResourceLimit(ThreadResource),(ssize_t) (chunk)/64),1)) 43 #if defined(__clang__) || (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 10)) 44 #define MagickCachePrefetch(address,mode,locality) \ 45 __builtin_prefetch(address,mode,locality) 47 #define MagickCachePrefetch(address,mode,locality) 50 #if defined(MAGICKCORE_THREAD_SUPPORT) 52 #elif defined(MAGICKCORE_WINDOWS_SUPPORT) 60 #if defined(MAGICKCORE_THREAD_SUPPORT) 62 #elif defined(MAGICKCORE_WINDOWS_SUPPORT) 63 return(GetCurrentThreadId());
71 char *thread_filename)
77 thread_id[2*
sizeof(id)+1];
86 (void) memcpy(bytes,&
id,
sizeof(
id));
87 for (i=0; i < (ssize_t)
sizeof(bytes); i++)
89 thread_id[
sizeof(thread_id)-1]=
'\0';
96 #if defined(MAGICKCORE_THREAD_SUPPORT) 107 magick_thread.signature=0UL;
109 return(magick_thread.signature);
111 #elif defined(MAGICKCORE_WINDOWS_SUPPORT) 112 return((
size_t) GetCurrentThreadId());
114 return((
size_t) getpid());
120 #if defined(MAGICKCORE_THREAD_SUPPORT) 123 #elif defined(MAGICKCORE_WINDOWS_SUPPORT) 124 if (
id == GetCurrentThreadId())
138 #if defined(MAGICKCORE_OPENMP_SUPPORT) 139 return(omp_get_max_threads());
147 #if defined(MAGICKCORE_OPENMP_SUPPORT) 148 return(omp_get_thread_num());
156 #if defined(MAGICKCORE_OPENMP_SUPPORT) 157 omp_set_num_threads(threads);
165 #if defined(MAGICKCORE_OPENMP_SUPPORT) 166 omp_set_nested(value);
172 #if defined(__cplusplus) || defined(c_plusplus) static MagickThreadType GetMagickThreadId(void)
Definition: thread-private.h:58
static size_t GetOpenMPMaximumThreads(void)
Definition: thread-private.h:136
#define pthread_self
Definition: vms.h:836
MagickExport ssize_t FormatLocaleString(char *magick_restrict string, const size_t length, const char *magick_restrict format,...)
Definition: locale.c:502
static MagickBooleanType IsMagickThreadEqual(const MagickThreadType id)
Definition: thread-private.h:118
size_t MagickMutexType
Definition: thread-private.h:55
static void SetOpenMPMaximumThreads(const int threads)
Definition: thread-private.h:154
MagickBooleanType
Definition: magick-type.h:191
pid_t MagickThreadType
Definition: thread_.h:34
static int GetOpenMPThreadId(void)
Definition: thread-private.h:145
Definition: magick-type.h:194
static void SetOpenMPNested(const int value)
Definition: thread-private.h:163
Definition: magick-type.h:193
#define MagickPathExtent
Definition: magick-type.h:31
static size_t GetMagickThreadSignature(void)
Definition: thread-private.h:94
#define pthread_equal
Definition: vms.h:802
static void GetMagickThreadFilename(const char *filename, char *thread_filename)
Definition: thread-private.h:70