#c #openmp
#c #openmp
Вопрос:
#pragma omp parallel for schedule(static)
for (int i = 0; i < 100; i )
{ count--;}
Приведенный выше код подходит или нет?
Комментарии:
1. Является
count
атомарным типом?
Ответ №1:
В общем, код не в порядке. Возможны условия гонки. Вы можете использовать атомарное предложение omp.
#pragma omp parallel for schedule(static)
for (int i = 0; i < 100; i )
{
#pragma omp atomic update
count--;
}
Вы можете взглянуть на спецификацию об атомарном https://www.openmp.org/spec-html/5.0/openmpsu95.html
Комментарии:
1. Можно было бы использовать atomic, но в этом случае это эффективно превращает последовательный код в параллельную программу. В любом случае, этот случай — плохое место для начала.
2. Для этого есть предложение о сокращении.