diff options
author | Nick Ing-Simmons <nik@tiuk.ti.com> | 1997-11-15 20:42:28 +0000 |
---|---|---|
committer | Nick Ing-Simmons <nik@tiuk.ti.com> | 1997-11-15 20:42:28 +0000 |
commit | 0fefa03b970ac01e359bb69c9e4daaddc57f3db9 (patch) | |
tree | 04834a71c6704df1a6a5d2cfcdd013c05cc96857 /win32/win32thread.h | |
parent | 9811a7d768316e95d4f07bb4877adaf9834ec499 (diff) | |
download | perl-0fefa03b970ac01e359bb69c9e4daaddc57f3db9.tar.gz |
Implement dTHR via __declspec(thread) - part 2
p4raw-id: //depot/ansiperl@258
Diffstat (limited to 'win32/win32thread.h')
-rw-r--r-- | win32/win32thread.h | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/win32/win32thread.h b/win32/win32thread.h index 6af548d30a..1807f3bc46 100644 --- a/win32/win32thread.h +++ b/win32/win32thread.h @@ -98,7 +98,6 @@ typedef HANDLE perl_mutex; } STMT_END -#define THR Perl_getTHR() #define THREAD_CREATE(t, f) Perl_thread_create(t, f) #define THREAD_POST_CREATE(t) NOOP #define THREAD_RET_TYPE DWORD WINAPI @@ -106,16 +105,28 @@ typedef HANDLE perl_mutex; typedef THREAD_RET_TYPE thread_func_t(void *); + START_EXTERN_C + +#ifdef PERLDLL +extern __declspec(thread) struct thread *Perl_current_thread; +#define SET_THR(t) (Perl_current_thread = t) +#define THR Perl_current_thread +#else +#define THR Perl_getTHR() +#define SET_THR(t) Perl_setTHR(t) +#endif + void Perl_alloc_thread_key _((void)); int Perl_thread_create _((struct thread *thr, thread_func_t *fn)); void Perl_set_thread_self _((struct thread *thr)); struct thread *Perl_getTHR _((void)); void Perl_setTHR _((struct thread *t)); + END_EXTERN_C #define INIT_THREADS NOOP -#define ALLOC_THREAD_KEY Perl_alloc_thread_key() +#define ALLOC_THREAD_KEY NOOP #define SET_THREAD_SELF(thr) Perl_set_thread_self(thr) #define JOIN(t, avp) \ @@ -125,7 +136,7 @@ END_EXTERN_C croak("panic: JOIN"); \ } STMT_END -#define SET_THR(t) Perl_setTHR(t) #define YIELD Sleep(0) #endif /* _WIN32THREAD_H */ + |