Тема: розпаралелити for
Доброго вечора всім
Мав я значить один фор, який опрацьовував вектор vertices
Вирішив я його пришвидшити потоками: виніс тіло фору в функцію і передаю в неї межі які кожен конкретний потік має опрацювати
А по завершенню всі вони мають синхронізуватись, на тому ж місці де це зробив би і однопоточний фор
Гляньте чи не наткнусь я таким чином на якісь підводні камені, та і взагальному чи є якісь зауваження
void threadFunc(int startInd, int endInd, const std::vector<Vector3> & vertices);
int start = 0;
int end = vertices.size() - 1;
int threadsCount = std::thread::hardware_concurrency();
int part = (end - start) / threadsCount;
std::vector<std::thread> threads(threadsCount);
for (int i = 0; i < threadsCount; ++i)
{
int startInd = part * i;
int endInd = (i == threadsCount - 1) ? end : part * (i + 1);
threads[i] = std::thread(threadFunc, startInd, std::ref(vertices));
}
for (int i = 0; i < threadsCount; ++i)
{
threads[i].join();
}