Fix thread termination issues

This commit is contained in:
Cameron Gutman 2014-01-20 20:33:43 -05:00
commit 3740fd295c
4 changed files with 55 additions and 81 deletions

View file

@ -5,7 +5,10 @@
typedef void (*ThreadEntry)(void *context);
#if defined(LC_WINDOWS) || defined(LC_WINDOWS_PHONE)
typedef HANDLE PLT_THREAD;
typedef struct _PLT_THREAD {
HANDLE handle;
int cancelled;
} PLT_THREAD;
typedef HANDLE PLT_MUTEX;
typedef HANDLE PLT_EVENT;
#elif defined (LC_POSIX)
@ -28,6 +31,7 @@ void PltUnlockMutex(PLT_MUTEX *mutex);
int PltCreateThread(ThreadEntry entry, void* context, PLT_THREAD *thread);
void PltCloseThread(PLT_THREAD *thread);
void PltInterruptThread(PLT_THREAD *thread);
int PltIsThreadInterrupted(PLT_THREAD *thread);
void PltJoinThread(PLT_THREAD *thread);
int PltCreateEvent(PLT_EVENT *event);
@ -39,4 +43,4 @@ int PltWaitForEvent(PLT_EVENT *event);
#define PLT_WAIT_SUCCESS 0
#define PLT_WAIT_INTERRUPTED 1
void PltSleepMs(int ms);
int PltSleepMs(int ms);