16 #include "objfw-defs.h"
20 #if !defined(OF_HAVE_THREADS) || \
21 (!defined(OF_HAVE_PTHREADS) && !defined(OF_WINDOWS) && !defined(OF_AMIGAOS))
22 # error No threads available!
27 #if defined(OF_HAVE_PTHREADS)
29 typedef pthread_t of_thread_t;
30 #elif defined(OF_WINDOWS)
32 typedef HANDLE of_thread_t;
33 #elif defined(OF_AMIGAOS)
34 # include <exec/tasks.h>
35 # include <exec/semaphores.h>
40 struct SignalSemaphore semaphore;
41 struct Task *joinTask;
42 unsigned char joinSigBit;
47 typedef struct of_thread_attr_t {
52 #if defined(OF_HAVE_PTHREADS)
53 # define of_thread_is_current(t) pthread_equal(t, pthread_self())
54 # define of_thread_current() pthread_self()
55 #elif defined(OF_WINDOWS)
56 # define of_thread_is_current(t) (t == GetCurrentThread())
57 # define of_thread_current() GetCurrentThread()
58 #elif defined(OF_AMIGAOS)
59 # define of_thread_is_current(t) (t->thread == FindTask(NULL))
60 extern of_thread_t of_thread_current(
void);
66 extern int of_thread_attr_init(of_thread_attr_t *attr);
67 extern int of_thread_new(of_thread_t *thread,
const char *name,
68 void (*
function)(
id),
id object,
const of_thread_attr_t *attr);
69 extern void of_thread_set_name(
const char *name);
70 extern int of_thread_join(of_thread_t thread);
71 extern int of_thread_detach(of_thread_t thread);
struct objc_object * id
A pointer to any object.
Definition: ObjFWRT.h:90