我会保持简单。
void func1(){
//gnarly math1
}
void func2(){
//gnarly math2
}
如何使用open mp并行执行此功能?
编辑:更精确地说明我正在写的内容。如果您尝试使用ffmpeg(例如尝试将wav转换为mp3),它将在转换时向您显示进度。
我正在尝试不使用这样的多线程:
for(i=0;i<length;i++) {
double t = (double) i / WAVFILE_SAMPLES_PER_SECOND;
waveform[i] = volume*sin(frequency*t*2*M_PI);
int progress = ( 900 )*b;
if (progress == i){
b++;
printf("Writing: %d/%d amplitude=\"%d\"\n", i, length, __SUM);
}
}
输出:
Writing: 900/88200 amplitude="825"
Writing: 1800/88200 amplitude="1530"
Writing: 2700/88200 amplitude="2011"
Writing: 3600/88200 amplitude="2198"
Writing: 4500/88200 amplitude="2064"
...
答案 0 :(得分:1)
虽然我完全忘记了我的这个问题,但几天前我在阅读此指令和OPM构造时发现了一种方法:https://www.openmp.org/wp-content/uploads/OpenMP-4.5-1115-CPP-web.pdf。
所以:
#pragma omp parallel sections
{
#pragma omp section
// func 1
#pragma omp section
{
// func 2
}
}