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)
MagickExport ssize_t FormatLocaleString(char *magick_restrict string, const size_t length, const char *magick_restrict format,...)
Definition: locale.c:497
#define MagickPathExtent
Definition: magick-type.h:31
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:163
static int GetOpenMPThreadId(void)
Definition: thread-private.h:145
static MagickBooleanType IsMagickThreadEqual(const MagickThreadType id)
Definition: thread-private.h:118
static MagickThreadType GetMagickThreadId(void)
Definition: thread-private.h:58
static size_t GetOpenMPMaximumThreads(void)
Definition: thread-private.h:136
size_t MagickMutexType
Definition: thread-private.h:55
static void GetMagickThreadFilename(const char *filename, char *thread_filename)
Definition: thread-private.h:70
static void SetOpenMPMaximumThreads(const int threads)
Definition: thread-private.h:154
static size_t GetMagickThreadSignature(void)
Definition: thread-private.h:94
pid_t MagickThreadType
Definition: thread_.h:34
#define pthread_self
Definition: vms.h:836
#define pthread_equal
Definition: vms.h:802