У меня есть вектор точек. Каждая точка является n-мерным вектором. Для меня есть k = 100 баллов. Я должен рассчитать для каждой точки значения нескольких функций многих переменных. После этого я записываю результаты в текстовый файл.
У меня 4 ядра. Я использую многопоточность для этой задачи. Я хочу, чтобы только 4 потока работали одновременно. Мои темы почти независимы. Они имеют только один ресурс. TXT-файл. Каждый поток записывает результаты в конце. Я использую мьютекс для записи в этот файл.
Теперь у меня есть следующее решение:
for (int i = 0; i < k; k+=number_of_threads){
// create 4 threads
// start function for each 4 threads
// join thread 1
// join thread 2
// join thread 3
// join thread 4
}
Проблема в том, что новые потоки не будут запускаться, пока не закончится каждый поток. Это работает. Но я думаю, что есть лучшее решение.
Как я могу начать новый поток сразу после завершения одного из потоков? И я хочу, чтобы одновременно работали только 4 запущенных потока (4 - число ядер). Кстати, я использую pthreads.