Поскольку вы используете core2duo, я бы посмотрел алгоритм параллельной быстрой сортировки. Он сортирует на месте, экономит память и может достигать прироста производительности, пропорционального количеству процессоров, вплоть до небольшого числа процессоров.
Алгоритм параллельной быстрой сортировки в основном выполняет шаг разбиения, а затем выполняет быструю сортировку в левом и правом подсписках в отдельных процессах. Это может быть достигнуто путем сохранения границ в общем стеке, который в конечном итоге становится предметом спора при запуске с большим числом потоков.
Существуют и другие алгоритмы, такие как PSRS, которые масштабируются до большего числа процессоров, но, поскольку вы работаете с core2duo, который, вероятно, позволит максимально использовать 2 настоящих ядра + два гиперпоточных ядра, дополнительная память, необходимая для PSRS, будет вероятно, это пустая трата времени. Учитывая количество элементов, которые вы хотите отсортировать, вам, вероятно, потребуется сохранить память.
Я реализовал оба в Java на Github. Дайте мне знать, если вы хотите посмотреть на код как на руководство по реализации чего-либо с помощью pthreads.