- if(!TlsSetValue(xbt_self_thread_key,res))
- THROW0(system_error,0,"TlsSetValue of data describing the created thread failed");
-
- return res;
+ return stub->res;
+}
+
+void
+xbt_thread_join(xbt_thread_t thread,void ** thread_return) {
+
+ if(WAIT_OBJECT_0 != WaitForSingleObject(thread->handle,INFINITE))
+ THROW0(system_error,(int)GetLastError(), "WaitForSingleObject failed");
+
+ if(thread_return){
+
+ if(!GetExitCodeThread(thread->handle,(DWORD*)(*thread_return)))
+ THROW0(system_error,(int)GetLastError(), "GetExitCodeThread failed");
+ }
+
+ CloseHandle(thread->handle);