Просто из твоего кода не понятно, что вообще ты пытаешься сделать, слеплено 50 потоков, которые ты ждёшь, если записываются одни и теже данные, то логики я не вижу. А если используется работа с разными данными, то в полне себе норм вариант
По результатам предыдущего этапа есть массив arrQuerys[n].
Далее идёт:
for(int i=0;i<n;i++) f(arrQuerys[i]);