Есть ли способ повторно использовать pthreads?

У меня есть функция, которая вызывается миллионы раз, и работа, выполняемая этой функцией, является многопоточной. Вот функция:

void functionCalledSoManyTimes()
{
  for (int i = 0; i < NUM_OF_THREADS; i++)
  {
    pthread_create(&threads[i], &attr, thread_work_function, (void *)&thread_data[i]);
  }
  // wait
}

Я создаю потоки каждый раз, когда вызывается функция, и я даю каждому потоку свою структуру данных (которая была установлена один раз в начале алгоритма) для использования вthread_work_function,thread_work_functionпросто обрабатывает ряд массивов, иthread_data Структура содержит указатели на эти массивы и индексы, за которые отвечает каждый поток.

Хотя многопоточность алгоритма таким способом действительно улучшила производительность более чем на 20%, мое профилирование показывает, что повторяющиеся вызовы pthread_create вызывают значительные накладные расходы.

Мой вопрос: есть ли способ достичь моей цели без звонкаpthread_create каждый раз функция вызывается?

Problem Solved.

Спасибо, ребята, я очень ценю вашу помощь! Я написал решениеВот используя ваши советы.

Ответы на вопрос(2)

Ваш ответ на вопрос