Russian Qt Forum

Программирование => Алгоритмы => Тема начата: Igors от Март 21, 2010, 15:30



Название: Параллельные вычисления (грабли)
Отправлено: Igors от Март 21, 2010, 15:30
Добрый день

Код:
void MainCalc( CalcParam & theParam )
 #pragma omp parallel for    // это считаем параллельно
 for (i = 0; i < num; ++i)
   DoCalc(theParam);

  MonoCalc(theParam);       // а это в главной нитке
}

void DoCalc( CalcParam & theParam )
{
 .....                       // расчеты
 LOCK;                       // берем лок
 CalcParam temp = theParam;  // делаем копию theParam
 SetupParam(&theParam);      // изменяем theParam
 UNLOCK;                     // вынуждены снять лок
 DoCalc(theParam);           // ушли в рекурс
 LOCK;                       // берем лок
 theParam = temp;            // восстановили theParam
 UNLOCK;                     // сняли лок
}
Ну наверное увидеть ошибку не составит труда  :)


Название: Re: Параллельные вычисления (грабли)
Отправлено: garryHotDog от Март 21, 2010, 21:19
в чем вопрос то?