Параллельные секции и директива parallel sections
Директива parallel sections
обеспечивает параллельное выполнение
нескольких операторов, простых или составных.
{$omp parallel sections}
begin
секция 1;
секция 2;
...;
end;
Каждый оператор в блоке begin ... end
, следующем за директивой
является отдельной секцией.
{$omp parallel sections}
begin
оператор 1;
оператор 2;
begin
оператор 3;
оператор 4;
оператор 5;
end;
end;
Здесь описаны три параллельные секции, первая – оператор 1, вторая – оператор
2 и третья – блок begin
... end
, состоящий из операторов 3-5.
Все переменные, описанные вне параллельных секций, будут разделяемыми, то есть, если в секциях есть обращение к таким переменным, то потоки, выполняющие эти секции, будут обращаться к одной и той же ячейке памяти. Все переменные, объявленные внутри секции, будут доступны только в той секции, в которой они объявлены.
Корректная работа параллельных секций возможна, только если секции независимы друг от друга – если они могут выполняться в любом порядке, не обращаются к одним и тем же переменным и не изменяют их.