int thID1, thID2;
clock_t t1S, t2S;
clock_t t1E, t2E;
clock_t clS = clock();
#pragma omp parallel sections
{
#pragma omp section
{
t1S = clock();
Func1();
t1E = clock();
thID1 = omp_get_thread_num();
}
#pragma omp section
{
t2S = clock();
Func2();
t2E = clock();
thID2 = omp_get_thread_num();
}
}
clock_t clE = clock();
double tm = double(clE - clS) / CLOCKS_PER_SEC * 1000;
double tm1 = double(t1E - t1S) / CLOCKS_PER_SEC * 1000;
double tm2 = double(t2E - t2S) / CLOCKS_PER_SEC * 1000;
CString tmStr;
tmStr.Format(L"%.1f,%.1f,%.1f,%d,%d", tm1, tm2, tm, thID1, thID2);
SaveLogData2Txt(L"D:\\日志记录.txt", tmStr);
保存的日志输出中: tm1 + tm2 == tm 且 thID1 == thID2 == 0, 程序未并行运行
请教下是哪里出了问题导致程序无法并行运行?
1、是否开启了omp
2、检查并行域中线程数
3、核对变量的属性。
第5行建议改为
#pragma omp parallel sections num_threads(2) shared(thID1, thID2)
学习omp可以看看视频
https://www.bilibili.com/video/BV1uA411v776?p=3