#include <mono/metadata/metadata-internals.h>
#include <mono/metadata/mono-mlist.h>
#include <mono/metadata/threads-types.h>
-#include <mono/metadata/threadpool-ms.h>
+#include <mono/metadata/threadpool.h>
#include <mono/sgen/sgen-conf.h>
#include <mono/sgen/sgen-gc.h>
#include <mono/utils/mono-logger-internals.h>
#include <mono/utils/atomic.h>
#include <mono/utils/mono-coop-semaphore.h>
#include <mono/utils/hazard-pointer.h>
+#include <mono/utils/w32api.h>
#ifndef HOST_WIN32
#include <pthread.h>
}
if (domain == mono_get_root_domain ()) {
- mono_threadpool_ms_cleanup ();
+ mono_threadpool_cleanup ();
mono_gc_finalize_threadpool_threads ();
}
}
}
-static guint32
+static gsize WINAPI
finalizer_thread (gpointer unused)
{
MonoError error;
if (mono_thread_internal_current () != gc_thread) {
int ret;
gint64 start_ticks = mono_msec_ticks ();
- gint64 end_ticks = start_ticks + 2000;
+ gint64 end_ticks = start_ticks + 40000;
mono_gc_finalize_notify ();
/* Finishing the finalizer thread, so wait a little bit... */
- /* MS seems to wait for about 2 seconds */
+ /* MS seems to wait for about 2 seconds per finalizer thread */
+ /* and 40 seconds for all finalizers to finish */
while (!finalizer_thread_exited) {
gint64 current_ticks = mono_msec_ticks ();
guint32 timeout;