У меня есть опыт работы с параллельными циклами и секциями с OpenMP в C ++, но теперь мне нужно заставить потоки идти вперед и запускать функцию, пока один поток продолжает выполнять форнер-функцию
Функция table_builder_1 создает матрицуи после завершения работы всех потоков только один поток начинает записывать матрицу в файл (в настоящее время все остальные потоки ожидают его).
1. Как сделать так, чтобы потоки продолжили и запустили функцию table_builder_2?
2. После завершения потока писателя он присоединится к другим?
int main{
Class foo
foo.table_builder_1;
foo.table_builder_2;
return 0;
}
void foo:table_builder_1{
#pragma omp parallel for schedule(dynamic)
for (int i = 0; i < N_size; i++){
for (int j = 0; j < N_size; j++) {
create table
}
}
\\write the table in file:
file.write (Table)
return;
}
Примечание: 1. Я не могу распараллелить запись, потому что данные должны быть упорядочены. 2. Функция table_builder_2 делает то же самое, что table_builder_1