Commit 7b8b9040 authored by Simon Marlow's avatar Simon Marlow
Browse files

Remove the artifical cap on the number of workers

See #805.  This was here to catch bugs that resulted in an infinite
number of worker threads being created.  However, we can't put a
reasonable bound on the number of worker threads, because legitimate
programs may need to create large numbers of (probably blocked) worker
threads.  Furthermore, the OS probably has a bound on the number of
threads that a process can create in any case.

parent 16513d48
...@@ -28,8 +28,6 @@ ...@@ -28,8 +28,6 @@
Task *all_tasks = NULL; Task *all_tasks = NULL;
static Task *task_free_list = NULL; // singly-linked static Task *task_free_list = NULL; // singly-linked
static nat taskCount; static nat taskCount;
#define DEFAULT_MAX_WORKERS 64
static nat maxWorkers; // we won't create more workers than this
static nat tasksRunning; static nat tasksRunning;
static nat workerCount; static nat workerCount;
...@@ -58,11 +56,6 @@ initTaskManager (void) ...@@ -58,11 +56,6 @@ initTaskManager (void)
taskCount = 0; taskCount = 0;
workerCount = 0; workerCount = 0;
tasksRunning = 0; tasksRunning = 0;
#if defined(THREADED_RTS)
maxWorkers = DEFAULT_MAX_WORKERS * RtsFlags.ParFlags.nNodes;
#else
maxWorkers = DEFAULT_MAX_WORKERS;
#endif
initialized = 1; initialized = 1;
#if defined(THREADED_RTS) #if defined(THREADED_RTS)
newThreadLocalKey(&currentTaskKey); newThreadLocalKey(&currentTaskKey);
...@@ -264,9 +257,6 @@ startWorkerTask (Capability *cap, ...@@ -264,9 +257,6 @@ startWorkerTask (Capability *cap,
OSThreadId tid; OSThreadId tid;
Task *task; Task *task;
if (workerCount >= maxWorkers) {
barf("too many workers; runaway worker creation?");
}
workerCount++; workerCount++;
// A worker always gets a fresh Task structure. // A worker always gets a fresh Task structure.
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment