6501adfbef
okay naddy@
70 lines
3.6 KiB
Plaintext
70 lines
3.6 KiB
Plaintext
$OpenBSD: patch-mono_metadata_threadpool_c,v 1.2 2013/01/24 13:52:09 kurt Exp $
|
|
--- mono/metadata/threadpool.c.orig Mon Jan 30 13:13:39 2012
|
|
+++ mono/metadata/threadpool.c Tue Jan 22 08:59:32 2013
|
|
@@ -527,7 +527,7 @@ socket_io_init (SocketIOData *data)
|
|
data->event_system = POLL_BACKEND;
|
|
|
|
init_event_system (data);
|
|
- mono_thread_create_internal (mono_get_root_domain (), data->wait, data, TRUE, SMALL_STACK);
|
|
+ mono_thread_create_internal (mono_get_root_domain (), data->wait, data, TRUE, FALSE, SMALL_STACK);
|
|
LeaveCriticalSection (&data->io_lock);
|
|
data->inited = 2;
|
|
threadpool_start_thread (&async_io_tp);
|
|
@@ -678,7 +678,7 @@ threadpool_start_idle_threads (ThreadPool *tp)
|
|
break;
|
|
}
|
|
mono_perfcounter_update_value (tp->pc_nthreads, TRUE, 1);
|
|
- mono_thread_create_internal (mono_get_root_domain (), tp->async_invoke, tp, TRUE, stack_size);
|
|
+ mono_thread_create_internal (mono_get_root_domain (), tp->async_invoke, tp, TRUE, FALSE, stack_size);
|
|
SleepEx (100, TRUE);
|
|
} while (1);
|
|
}
|
|
@@ -1014,7 +1014,7 @@ threadpool_start_thread (ThreadPool *tp)
|
|
while (!mono_runtime_is_shutting_down () && (n = tp->nthreads) < tp->max_threads) {
|
|
if (InterlockedCompareExchange (&tp->nthreads, n + 1, n) == n) {
|
|
mono_perfcounter_update_value (tp->pc_nthreads, TRUE, 1);
|
|
- mono_thread_create_internal (mono_get_root_domain (), tp->async_invoke, tp, TRUE, stack_size);
|
|
+ mono_thread_create_internal (mono_get_root_domain (), tp->async_invoke, tp, TRUE, FALSE, stack_size);
|
|
return TRUE;
|
|
}
|
|
}
|
|
@@ -1053,12 +1053,12 @@ threadpool_append_jobs (ThreadPool *tp, MonoObject **j
|
|
|
|
if (tp->pool_status == 0 && InterlockedCompareExchange (&tp->pool_status, 1, 0) == 0) {
|
|
if (!tp->is_io) {
|
|
- mono_thread_create_internal (mono_get_root_domain (), monitor_thread, NULL, TRUE, SMALL_STACK);
|
|
+ mono_thread_create_internal (mono_get_root_domain (), monitor_thread, NULL, TRUE, FALSE, SMALL_STACK);
|
|
threadpool_start_thread (tp);
|
|
}
|
|
/* Create on demand up to min_threads to avoid startup penalty for apps that don't use
|
|
* the threadpool that much
|
|
- * mono_thread_create_internal (mono_get_root_domain (), threadpool_start_idle_threads, tp, TRUE, SMALL_STACK);
|
|
+ * mono_thread_create_internal (mono_get_root_domain (), threadpool_start_idle_threads, tp, TRUE, FALSE, SMALL_STACK);
|
|
*/
|
|
}
|
|
|
|
@@ -1479,11 +1479,7 @@ async_invoke_thread (gpointer data)
|
|
gboolean res;
|
|
|
|
InterlockedIncrement (&tp->waiting);
|
|
-#if defined(__OpenBSD__)
|
|
- while (mono_cq_count (tp->queue) == 0 && (res = mono_sem_wait (&tp->new_job, TRUE)) == -1) {// && errno == EINTR) {
|
|
-#else
|
|
while (mono_cq_count (tp->queue) == 0 && (res = mono_sem_timedwait (&tp->new_job, 2000, TRUE)) == -1) {// && errno == EINTR) {
|
|
-#endif
|
|
if (mono_runtime_is_shutting_down ())
|
|
break;
|
|
if (THREAD_WANTS_A_BREAK (thread))
|
|
@@ -1570,9 +1566,9 @@ ves_icall_System_Threading_ThreadPool_SetMinThreads (g
|
|
InterlockedExchange (&async_tp.min_threads, workerThreads);
|
|
InterlockedExchange (&async_io_tp.min_threads, completionPortThreads);
|
|
if (workerThreads > async_tp.nthreads)
|
|
- mono_thread_create_internal (mono_get_root_domain (), threadpool_start_idle_threads, &async_tp, TRUE, SMALL_STACK);
|
|
+ mono_thread_create_internal (mono_get_root_domain (), threadpool_start_idle_threads, &async_tp, TRUE, FALSE, SMALL_STACK);
|
|
if (completionPortThreads > async_io_tp.nthreads)
|
|
- mono_thread_create_internal (mono_get_root_domain (), threadpool_start_idle_threads, &async_io_tp, TRUE, SMALL_STACK);
|
|
+ mono_thread_create_internal (mono_get_root_domain (), threadpool_start_idle_threads, &async_io_tp, TRUE, FALSE, SMALL_STACK);
|
|
return TRUE;
|
|
}
|
|
|