【发布时间】:2021-03-07 06:47:23
【问题描述】:
我有 5 个函数 A、B、C、D、E。
要执行 D,我需要执行 B、C, 要执行 E 我需要执行 A、D。
我试过了
int main()
{
#pragma omp parallel num_threads(5)
{
long t1 = clock();
int a = 0, b = 0, c = 0, d = 0, e = 0;
int th = omp_get_thread_num();
if (th == 0) {
a += A();
printf("A is finished after %d\n", clock() - t1);
}
if (th == 1) {
b += B();
printf("B is finished after %d\n", clock() - t1);
}
if (th == 2) {
c += C();
printf("C is finished after %d\n", clock() - t1);
}
if (th == 3 && (b == 1 && c == 1)) {
d += D();
printf("D is finished after %d\n", clock() - t1);
}
if (th == 4 && (a == 1 && d == 1)) {
e += E();
printf("E is finished after %d\n", clock() - t1);
}
}
return 0;
}
但是D、E还没有执行
到目前为止,所有这些函数都返回 1 用于调试目的
【问题讨论】:
标签: c multithreading performance parallel-processing openmp