请并行程序设计或者多线程程序设计高手解决一个do-while模型的并行
能不能用OpenMP设计一个并行do-while模型的算法,让创建线程放在do-while外面,也就是只创建和销毁一次线程,而不是放在do-while内部,因为do-while可能执行成百上千次,如果放在内部的话成百上千次创建和销毁线程的开销往往比并行减少的时间还大。
如果OpenMP不能解决,如果有其它技术解决方案如Win32多线程技术也行。
#pragma omp parallel for (…) //创建线程
{
do
{
pjn=0;
for(i=0;i<LMN;i++)
{
//我课题这里是要采用流水线并行的,不过可以先设计出一个解决外层do-while并
行的算法,最后再考虑内部的流水线并行(流水线并行已经实现)。
Error=GetError(i); //取得误差
If(Error>Delta)//如果误差大于固定值,则修正
{
pjn++;
Func_Modify(i); //对与i相关的元素进行修正。
}
}
}while(pjn!=0);
}//在这里要销毁。
这个问题困了我一两个月了,请大家多多指点,不胜感谢。