diff options
Diffstat (limited to 'src/or')
-rw-r--r-- | src/or/cpuworker.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/or/cpuworker.c b/src/or/cpuworker.c index ad99af64c0..8d71483f81 100644 --- a/src/or/cpuworker.c +++ b/src/or/cpuworker.c @@ -89,7 +89,14 @@ cpu_init(void) event_add(reply_event, NULL); } if (!threadpool) { - threadpool = threadpool_new(get_num_cpus(get_options()), + /* + In our threadpool implementation, half the threads are permissive and + half are strict (when it comes to running lower-priority tasks). So we + always make sure we have at least two threads, so that there will be at + least one thread of each kind. + */ + const int n_threads = get_num_cpus(get_options()) + 1; + threadpool = threadpool_new(n_threads, replyqueue, worker_state_new, worker_state_free, |