Вот в чем проблема ... я поставлю то, что придумал, внизу ... но я немного растерялся ... мне сказали использовать полное утверждение ... но мы еще даже не узнали об этом. Так что я пытаюсь научить себя чему-то ... кажется, это сложная тема, чтобы найти много на. Язык кодирования называется либо pidgin, либо Peril-L, в нем говорится, что они определят язык программирования pidgin, называемый Peril-L, который можно использовать для анализа и разработки параллельных алгоритмов. Не знаю, как выглядит C ++ на самом деле ...
Переписать программу итеративного суммирования, используя forall; не забываете об условиях гонки?
программа итерационного суммирования:
sum = 0;
for(i=0; i<n; i++)
{
sum+=[i];
}
Вот какая часть итеративного решения для потоков:
for(i=start; i<end; i++)
{
sum+=x[i];
}
Я понятия не имею, что это значит под словом "не знаю" ... не уверен, что использовал выражение "все подряд", если это то, что он хочет?
Я думаю, он хочет что-то похожее на это?
int *x;
mutex m;
int i = 0;
int itersum()
{
forall(index in(0..i-1))
{
mutex_lock(m);
sum+=x[index];
i++;
mutex_unlock(m);
}
return sum;
}
Возможно, я написал что-то не так? Но было бы даже условие гонки, используя полное утверждение? Я действительно просто не понимаю, как работает forall. Есть ли условие гонки для заявления forall выше?