如何让线程继续并启动其他功能 - C++使用 OpenMP?

How can I do the threads go ahead and start other function - C++ with OpenMP?

本文关键字:功能 C++ 使用 OpenMP 其他 启动 线程 继续      更新时间:2023-10-16

我在 C++ 中使用 OpenMP 有并行循环和部分的经验,但现在我需要让线程继续并启动一个函数,而一个线程继续运行一个 forner 函数

该函数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相同

这听起来是一个很好的案例#pragma omp single nowait

#pragma omp single指定一段代码应由单个线程(不一定是主线程(执行(来自此答案(。

nowait子句阻止其他线程等待写入的线程。