18 #ifndef MAGICKCORE_THREAD_PRIVATE_H
19 #define MAGICKCORE_THREAD_PRIVATE_H
26 #if defined(__cplusplus) || defined(c_plusplus)
33 #define magick_threads(source,destination,chunk,expression) \
34 num_threads((((expression) != 0) && \
35 ((GetImagePixelCacheType(source) == MemoryCache) || \
36 (GetImagePixelCacheType(source) == MapCache)) && \
37 ((GetImagePixelCacheType(destination) == MemoryCache) || \
38 (GetImagePixelCacheType(destination) == MapCache))) ? \
39 MagickMax(1,MagickMin(GetMagickResourceLimit(ThreadResource),(chunk)/16)) : 1)
41 #if defined(__clang__) || (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 10))
42 #define MagickCachePrefetch(address,mode,locality) \
43 __builtin_prefetch(address,mode,locality)
45 #define MagickCachePrefetch(address,mode,locality)
48 #if defined(MAGICKCORE_THREAD_SUPPORT)
50 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
58 #if defined(MAGICKCORE_THREAD_SUPPORT)
60 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
61 return(GetCurrentThreadId());
69 #if defined(MAGICKCORE_THREAD_SUPPORT)
80 magick_thread.signature=0UL;
82 return(magick_thread.signature);
84 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
85 return((
size_t) GetCurrentThreadId());
87 return((
size_t) getpid());
93 #if defined(MAGICKCORE_THREAD_SUPPORT)
96 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
97 if (
id == GetCurrentThreadId())
111 #if defined(MAGICKCORE_OPENMP_SUPPORT)
112 return(omp_get_max_threads());
120 #if defined(MAGICKCORE_OPENMP_SUPPORT)
121 return(omp_get_thread_num());
129 #if defined(MAGICKCORE_OPENMP_SUPPORT)
130 omp_set_num_threads(threads);
138 #if defined(MAGICKCORE_OPENMP_SUPPORT)
139 omp_set_nested(value);
145 #if defined(__cplusplus) || defined(c_plusplus)
static MagickThreadType GetMagickThreadId(void)
Definition: thread-private.h:56
static size_t GetOpenMPMaximumThreads(void)
Definition: thread-private.h:109
#define pthread_self
Definition: vms.h:836
static MagickBooleanType IsMagickThreadEqual(const MagickThreadType id)
Definition: thread-private.h:91
size_t MagickMutexType
Definition: thread-private.h:53
static void SetOpenMPMaximumThreads(const int threads)
Definition: thread-private.h:127
MagickBooleanType
Definition: magick-type.h:211
pid_t MagickThreadType
Definition: thread_.h:34
static int GetOpenMPThreadId(void)
Definition: thread-private.h:118
Definition: magick-type.h:214
static void SetOpenMPNested(const int value)
Definition: thread-private.h:136
Definition: magick-type.h:213
static size_t GetMagickThreadSignature(void)
Definition: thread-private.h:67
#define pthread_equal
Definition: vms.h:802