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#if defined(MAGICKCORE_THREAD_SUPPORT)
82 magick_thread.signature=0UL;
84 return(magick_thread.signature);
86#elif defined(MAGICKCORE_WINDOWS_SUPPORT)
87 return((
size_t) GetCurrentThreadId());
89 return((
size_t) getpid());
95#if defined(MAGICKCORE_THREAD_SUPPORT)
98#elif defined(MAGICKCORE_WINDOWS_SUPPORT)
99 if (
id == GetCurrentThreadId())
113#if defined(MAGICKCORE_OPENMP_SUPPORT)
114 return(omp_get_max_threads());
122#if defined(MAGICKCORE_OPENMP_SUPPORT)
123 return(omp_get_thread_num());
131#if defined(MAGICKCORE_OPENMP_SUPPORT)
132 omp_set_num_threads(threads);
140#if defined(MAGICKCORE_OPENMP_SUPPORT)
141 omp_set_nested(value);
147#if defined(__cplusplus) || defined(c_plusplus)
MagickBooleanType
Definition magick-type.h:203
@ MagickFalse
Definition magick-type.h:204
@ MagickTrue
Definition magick-type.h:205
static void SetOpenMPNested(const int value)
Definition thread-private.h:138
static int GetOpenMPThreadId(void)
Definition thread-private.h:120
static MagickBooleanType IsMagickThreadEqual(const MagickThreadType id)
Definition thread-private.h:93
static MagickThreadType GetMagickThreadId(void)
Definition thread-private.h:58
static size_t GetOpenMPMaximumThreads(void)
Definition thread-private.h:111
size_t MagickMutexType
Definition thread-private.h:55
static void SetOpenMPMaximumThreads(const int threads)
Definition thread-private.h:129
static size_t GetMagickThreadSignature(void)
Definition thread-private.h:69
pid_t MagickThreadType
Definition thread_.h:34
#define pthread_self
Definition vms.h:836
#define pthread_equal
Definition vms.h:802