multi-threaded merge sort