Параллельное программирование выглядит этот код как то, что он просит?помоги о состоянии гонки - PullRequest
2 голосов
/ 02 сентября 2010

Вот в чем проблема ... я поставлю то, что придумал, внизу ... но я немного растерялся ... мне сказали использовать полное утверждение ... но мы еще даже не узнали об этом. Так что я пытаюсь научить себя чему-то ... кажется, это сложная тема, чтобы найти много на. Язык кодирования называется либо 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 выше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...