- DWORD junk;
-
- MUTEX_LOCK(&thr->mutex);
- DEBUG_L(PerlIO_printf(PerlIO_stderr(),
- "%p: create OS thread\n", thr));
- thr->self = CreateThread(NULL, 0, fn, (void*)thr, 0, &junk);
- DEBUG_L(PerlIO_printf(PerlIO_stderr(),
- "%p: OS thread = %p, id=%ld\n", thr, thr->self, junk));
- MUTEX_UNLOCK(&thr->mutex);
- return thr->self ? 0 : -1;
-}
+#if defined(USE_ITHREADS)
+# ifdef USE_DECLSPEC_THREAD
+ return Perl_current_context;
+# else
+ DWORD err = GetLastError();
+ void *result = TlsGetValue(PL_thr_key);
+ SetLastError(err);
+ return result;
+# endif
+#else
+ return NULL;