thread->thread_pinning_ref = NULL;
}
+ g_assert (thread->suspended);
+ mono_os_event_destroy (thread->suspended);
+ g_free (thread->suspended);
+ thread->suspended = NULL;
}
/*
this_obj->name = NULL;
g_free (name);
}
-
- g_assert (this_obj->suspended);
- mono_os_event_destroy (this_obj->suspended);
- g_free (this_obj->suspended);
- this_obj->suspended = NULL;
}
void
|| mono_gc_is_finalizer_internal_thread (thread)
|| (thread->flags & MONO_THREAD_FLAG_DONT_MANAGE)
) {
- //mono_threads_close_thread_handle (wait->handles [i]);
- wait->threads [i] = NULL; /* ignore this thread in next loop */
+ mono_threads_close_thread_handle (wait->handles [i]);
+ wait->threads [i] = NULL;
continue;
}
(thread->state & ThreadState_Stopped) != 0) {
UNLOCK_THREAD (thread);
mono_threads_close_thread_handle (wait->handles [i]);
- wait->threads [i] = NULL; /* ignore this thread in next loop */
+ wait->threads [i] = NULL;
continue;
}
/* Signal the thread to suspend + calls UNLOCK_THREAD (thread) */
async_suspend_internal (thread, TRUE);
+
+ mono_threads_close_thread_handle (wait->handles [i]);
+ wait->threads [i] = NULL;
}
if (eventidx <= 0) {
/*