/* Join the thread */ #ifdef WIN32 printf( "thread handle:%x thread-id: %dx\n", thread->handle, GetThreadId( thread->handle ) ); if (WaitForSingleObject(thread->handle, INFINITE) != WAIT_OBJECT_0) { printf("GetLastError output: '%d'", GetLastError()); /* Timeout/abandonment unexpected here; check $^E */ Perl_croak(aTHX_ "PANIC: underlying join failed"); }; #else if ((rc_join = pthread_join(thread->thr, &retval)) != 0) { /* In progress/deadlock/unknown unexpected here; check $! */ errno = rc_join; Perl_croak(aTHX_ "PANIC: underlying join failed"); }; #endif #### # wait to join and delete from hash foreach my $join (threads->list(threads::joinable)) { my $val = eval{ $join->join() } or die "Join failed with '$!' : '$^E'"; tprint("_handle() output: " . $join->_handle()); #my $val = $join->join(); # tprint("Deleting fd- $val"); delete $FDcache{$val}; } #### C:\>perl -v This is perl 5, version 16, subversion 1 (v5.16.1) built for MSWin32-x64-multi-t hread (with 1 registered patch, see perl -V for more detail)