Commit 250c8801 authored by Nick Mathewson's avatar Nick Mathewson 🦀
Browse files

Always start with one additional worker thread

Now that half the threads are permissive and half are strict, we
need to make sure we have at least two threads, so that we'll
have at least one of each kind.
parent 0ae0b5aa
Loading
Loading
Loading
Loading

changes/more-threads

0 → 100644
+3 −0
Original line number Diff line number Diff line
  o Minor features (relay, performance):
    - Always start relays with at least two worker threads, to prevent
      priority inversion on slow tasks.  Part of the fix for bug 22883.
+8 −1
Original line number Diff line number Diff line
@@ -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,