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) \
48 magick_unreferenced(address); \
49 magick_unreferenced(mode); \
50 magick_unreferenced(locality);
53 #if defined(MAGICKCORE_THREAD_SUPPORT)
55 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
63 #if defined(MAGICKCORE_THREAD_SUPPORT)
64 return(pthread_self());
65 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
66 return(GetCurrentThreadId());
74 #if defined(MAGICKCORE_THREAD_SUPPORT)
85 magick_thread.signature=0UL;
86 magick_thread.id=pthread_self();
87 return(magick_thread.signature);
89 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
90 return((
size_t) GetCurrentThreadId());
92 return((
size_t) getpid());
98 #if defined(MAGICKCORE_THREAD_SUPPORT)
99 if (pthread_equal(
id,pthread_self()) != 0)
101 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
102 if (
id == GetCurrentThreadId())
116 #if defined(MAGICKCORE_OPENMP_SUPPORT)
117 return(omp_get_max_threads());
125 #if defined(MAGICKCORE_OPENMP_SUPPORT)
126 return(omp_get_thread_num());
134 #if defined(MAGICKCORE_OPENMP_SUPPORT)
135 omp_set_num_threads(threads);
143 #if defined(MAGICKCORE_OPENMP_SUPPORT)
144 omp_set_nested(value);
150 #if defined(__cplusplus) || defined(c_plusplus)
static MagickThreadType GetMagickThreadId(void)
Definition: thread-private.h:61
static size_t GetOpenMPMaximumThreads(void)
Definition: thread-private.h:114
static MagickBooleanType IsMagickThreadEqual(const MagickThreadType id)
Definition: thread-private.h:96
size_t MagickMutexType
Definition: thread-private.h:58
static void SetOpenMPMaximumThreads(const int threads)
Definition: thread-private.h:132
MagickBooleanType
Definition: magick-type.h:169
pid_t MagickThreadType
Definition: thread_.h:34
static int GetOpenMPThreadId(void)
Definition: thread-private.h:123
Definition: magick-type.h:172
static void SetOpenMPNested(const int value)
Definition: thread-private.h:141
Definition: magick-type.h:171
static size_t GetMagickThreadSignature(void)
Definition: thread-private.h:72