Does anyone have any tips for efficiently parallelizing std::partition using TBB? Has this been done already?

Here is what I'm thinking:

1. if the array is small, std::partition it (serial) and return
2. else, treat the array as 2 interleaved arrays using custom iterators (interleave in cache-sized blocks)
3. start a parallel partition task for each pair of iterators (recurse to step 1)
4. swap elements between the two partition/middle pointers\*
5. return the merged partition/middle pointer

\*I am hoping in the average case this region will be small compared to the length of the array or compared to the swaps required if partitioning the array in contiguous chunks.

Any thoughts before I try it?