18 #ifndef _MAGICKCORE_THREAD_PRIVATE_H
19 #define _MAGICKCORE_THREAD_PRIVATE_H
25 #if defined(__cplusplus) || defined(c_plusplus)
32 #define magick_threads(source,destination,chunk,expression) \
33 num_threads((expression) == 0 ? 1 : \
34 (((chunk) > (32*GetMagickResourceLimit(ThreadResource))) && \
35 (GetImagePixelCacheType(source) != DiskCache)) && \
36 (GetImagePixelCacheType(destination) != DiskCache) ? \
37 GetMagickResourceLimit(ThreadResource) : \
38 GetMagickResourceLimit(ThreadResource) < 2 ? 1 : 2)
40 #if defined(__clang__) || (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 10))
41 #define MagickCachePrefetch(address,mode,locality) \
42 __builtin_prefetch(address,mode,locality)
44 #define MagickCachePrefetch(address,mode,locality)
47 #if defined(MAGICKCORE_THREAD_SUPPORT)
49 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
57 #if defined(MAGICKCORE_THREAD_SUPPORT)
59 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
60 return(GetCurrentThreadId());
68 #if defined(MAGICKCORE_THREAD_SUPPORT)
79 magick_thread.signature=0UL;
81 return(magick_thread.signature);
83 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
84 return((
size_t) GetCurrentThreadId());
86 return((
size_t) getpid());
92 #if defined(MAGICKCORE_THREAD_SUPPORT)
95 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
96 if (
id == GetCurrentThreadId())
110 #if defined(MAGICKCORE_OPENMP_SUPPORT)
111 return(omp_get_max_threads());
119 #if defined(MAGICKCORE_OPENMP_SUPPORT)
120 return(omp_get_thread_num());
128 #if defined(MAGICKCORE_OPENMP_SUPPORT)
129 omp_set_num_threads(threads);
137 #if defined(MAGICKCORE_OPENMP_SUPPORT)
138 omp_set_nested(value);
144 #if defined(__cplusplus) || defined(c_plusplus)
static MagickThreadType GetMagickThreadId(void)
Definition: thread-private.h:55
static size_t GetOpenMPMaximumThreads(void)
Definition: thread-private.h:108
#define pthread_self
Definition: vms.h:836
static MagickBooleanType IsMagickThreadEqual(const MagickThreadType id)
Definition: thread-private.h:90
size_t MagickMutexType
Definition: thread-private.h:52
static void SetOpenMPMaximumThreads(const int threads)
Definition: thread-private.h:126
MagickBooleanType
Definition: magick-type.h:211
pid_t MagickThreadType
Definition: thread_.h:34
static int GetOpenMPThreadId(void)
Definition: thread-private.h:117
Definition: magick-type.h:214
static void SetOpenMPNested(const int value)
Definition: thread-private.h:135
Definition: magick-type.h:213
static size_t GetMagickThreadSignature(void)
Definition: thread-private.h:66
#define pthread_equal
Definition: vms.h:802