Один поток сортирует другой преобразует? Или параллельная сортировка, и параллельное преобразование?
Если второе, то я начал бы с того, что описал как я представляю параллельное решение в этом случае, потому как вариантов много. Если первое, то я начал бы с примера
int main(){
std::vector<char> a = {'B', 'a'};
std::thread t1(&mySort, &a);
std::thread t2(&myToLower, &a);
t1.join();
t2.join();
}