20 #include "objfw-defs.h" 24 #if !defined(OF_HAVE_THREADS) || \ 25 (!defined(OF_HAVE_PTHREADS) && !defined(OF_WINDOWS) && !defined(OF_AMIGAOS)) 26 # error No threads available! 31 #if defined(OF_HAVE_PTHREADS) 33 typedef pthread_t OFPlainThread;
34 #elif defined(OF_WINDOWS) 36 typedef HANDLE OFPlainThread;
37 #elif defined(OF_AMIGAOS) 38 # include <exec/tasks.h> 39 # include <exec/semaphores.h> 44 struct SignalSemaphore semaphore;
45 struct Task *joinTask;
46 unsigned char joinSigBit;
54 } OFPlainThreadAttributes;
56 #if defined(OF_HAVE_PTHREADS) 57 static OF_INLINE OFPlainThread
58 OFCurrentPlainThread(
void)
60 return pthread_self();
64 OFPlainThreadIsCurrent(OFPlainThread thread)
66 return pthread_equal(thread, pthread_self());
68 #elif defined(OF_WINDOWS) 69 static OF_INLINE OFPlainThread
70 OFCurrentPlainThread(
void)
72 return GetCurrentThread();
76 OFPlainThreadIsCurrent(OFPlainThread thread)
78 return (thread == GetCurrentThread());
80 #elif defined(OF_AMIGAOS) 81 extern OFPlainThread OFCurrentPlainThread(
void);
82 extern bool OFPlainThreadIsCurrent(OFPlainThread);
88 extern int OFPlainThreadAttributesInit(OFPlainThreadAttributes *attr);
89 extern int OFPlainThreadNew(OFPlainThread *thread,
const char *name,
90 void (*
function)(
id),
id object,
const OFPlainThreadAttributes *attr);
91 extern void OFSetThreadName(
const char *name);
92 extern int OFPlainThreadJoin(OFPlainThread thread);
93 extern int OFPlainThreadDetach(OFPlainThread thread);