Вам нужно либо использовать omp parallel for
с последующим циклом aa for, либо использовать gcc __gnu_parallel::for_each
, как было предложено ранее, либо явно разделить ваш диапазон итераций (обратите внимание на отсутствие for
в прагме):
#pragma omp parallel
{
int tid = omp_get_thread_num();
int n = omp_get_num_threads();
auto nbeg1, nbeg2, nend1, nend2 = ... // create n chunks of work, each thread takes one chunk
std::for_each(
boost::make_zip_iterator(boost::make_tuple(nbeg1, nbeg2)),
boost::make_zip_iterator(boost::make_tuple(nend1, nend2)),
zip_func() );
}