/* 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)