nicht mehr Threads erzeugen als der Prozessor an logischen Core hat!
Da jeder Thread mit voller CPU-Leistung läuft (Quicksort hat keine IO-Operationen) würden mehr Threads als Cores nur bremsen.
Ich würde es für den Anfang mal mit einer 2-Thread-Lösung für Quicksort versuchen.
Zu Beginn einmal die Partition-Funktion aus führen und dann jeweils einen Thread für jede Hälfte des zu sortierenden Arrays starten.
Jeder der beiden Threads verwendet dann rekursives Quicksort.
Dabei würde ich bei der Partitionierung beim ersten Mal die
median of three Methode verwenden, damit die Daten zwischen den beiden Threads möglicht gut aufgeteilt werden.
Wenn man perfekt machen möchte braucht man einen Threadpool und einen FIFO der von allen Threads benützt wird.