7 #define WIN32_LEAN_AND_MEAN
12 #include <sys/signal.h>
20 #if !defined(__WIN32__)
24 public enum ThreadPriority
39 #if defined(__WIN32__)
45 #if defined(__WIN32__)
59 uint returnCode = this.returnCode = Main();
61 #if defined(__WIN32__)
75 virtual uint Main(void);
82 #if !defined(__WIN32__)
86 // printf("Creating %s thread\n", _class.name);
87 #if defined(__WIN32__)
89 handle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadCallBack, this, 0, &id);
93 /*pthread_attr_t attr;
94 pthread_attr_init(&attr);
95 pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);*/ // Default attribute ???
96 error = pthread_create(&id, null /*&attr*/, (void *)ThreadCallBack, this);
98 printf("Error %d creating a thread\n", error);
106 #if defined(__WIN32__)
109 TerminateThread(handle, 0);
114 pthread_kill(id, SIGQUIT);
125 #if defined(__WIN32__)
126 if(WaitForSingleObject(handle, INFINITE /*2000*/) == WAIT_TIMEOUT)
127 PrintLn("Thread not returning?\n");
132 pthread_join(id, NULL);*/
139 void SetPriority(ThreadPriority priority)
141 #if defined(__WIN32__)
142 SetThreadPriority(handle, priority);
145 struct sched_param param;
146 int policy = (priority > 0) ? SCHED_RR : SCHED_OTHER;
147 param.sched_priority = (priority > 0) ? (priority * 99 / 15) : 0;
148 pthread_setschedparam(id, policy, ¶m);
153 property bool created { get { return started; } };