20 #ifndef __itkMultiThreader_h
21 #define __itkMultiThreader_h
27 #include <sys/types.h>
28 #include <sys/resource.h>
29 #include <sys/types.h>
30 #include <sys/prctl.h>
38 #include <sys/signal.h>
39 #include <sys/sysmp.h>
40 #include <sys/errno.h>
41 #include <sys/syssgi.h>
49 #ifdef ITK_USE_PTHREADS
74 #define ITK_MAX_THREADS 128
77 #ifdef ITK_USE_PTHREADS
78 #define ITK_MAX_THREADS 128
81 #ifdef ITK_USE_WIN32_THREADS
82 #define ITK_MAX_THREADS 128
87 #undef ITK_MAX_THREADS
88 #define ITK_MAX_THREADS 128
93 #if defined(__MINGW32__)
94 #undef ITK_MAX_THREADS
95 #define ITK_MAX_THREADS 128
99 #if defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730
100 #undef ITK_MAX_THREADS
101 #define ITK_MAX_THREADS 1
104 #ifndef ITK_MAX_THREADS
105 #define ITK_MAX_THREADS 1
117 #ifdef ITK_USE_PTHREADS
118 typedef void *(*ThreadFunctionType)(
void *);
120 #define ITK_THREAD_RETURN_VALUE NULL
121 #define ITK_THREAD_RETURN_TYPE void *
124 #ifdef ITK_USE_WIN32_THREADS
127 #define ITK_THREAD_RETURN_VALUE 0
128 #define ITK_THREAD_RETURN_TYPE DWORD __stdcall
131 #ifndef ITK_THREAD_RETURN_VALUE
134 #define ITK_THREAD_RETURN_VALUE
135 #define ITK_THREAD_RETURN_TYPE void
156 void SetNumberOfThreads(
int numberOfThreads );
157 itkGetConstMacro( NumberOfThreads,
int );
164 static void SetGlobalMaximumNumberOfThreads(
int val);
165 static int GetGlobalMaximumNumberOfThreads();
171 static void SetGlobalDefaultNumberOfThreads(
int val);
172 static int GetGlobalDefaultNumberOfThreads();
178 void SingleMethodExecute();
184 void MultipleMethodExecute();
204 void TerminateThread(
int thread_id );
207 static bool GetInitialized()
208 {
return m_Initialized; }
209 static usptr_t * GetThreadArena()
210 {
return m_ThreadArena; }
212 static void Initialize();
226 #ifdef ThreadInfoStruct
227 #undef ThreadInfoStruct
240 enum {
SUCCESS, ITK_EXCEPTION, ITK_PROCESS_ABORTED_EXCEPTION, STD_EXCEPTION,
UNKNOWN} ThreadExitCode;
249 void PrintSelf(std::ostream& os,
Indent indent)
const;
254 static bool m_Initialized;
255 static usptr_t * m_ThreadArena;
256 static int m_DevzeroFd;
260 void operator=(
const Self&);