это я снова. Итак, у меня проблема с параллелизмом в Ada. В основном часть моей программы выглядит так:Параллельность с петлями
for i in 1..it loop
for x in 1..A loop
for y in 1..B
--tab(x,y):=...
end loop;
end loop;
for x in 1..A loop
for y in 1..B
--tab(x,y):=...
end loop;
end loop;
end loop;
Внутри этих циклов есть некоторые расчеты. То, что я намереваюсь сделать, состоит в том, чтобы заставить эти две «внутренние» петли работать одновременно. Либо один элемент из цикла 1, то один элемент из цикла 2 или немного меньше «симметричный». Но обычно я хочу, чтобы это выглядело так: первая итерация, две «внутри» петли работают одновременно, все операции завершаются, завершается итерация. Вторая итерация такая же и т. Д. Мои вопросы: могу ли я сделать это с заявлениями «ВХОД» и «ПРИНИМАЕТ»? Или это потребует чего-то большего? Если бы вы могли просто указать мне правильное решение, потому что я видел много примеров, но никто не устраивал мою проблему.
Прежде чем задавать больше вопросов, вы должны вернуться к предыдущим и ** принять ** полезные ответы. –
Вы правы, просто исправили это. – user2443194
Для разработки параллельной реализации нам может потребоваться дополнительная информация. Например, если 'tab (x, y)' является общим и обновляется обоими процессами, он, вероятно, лучше всего будет реализован как «защищенный объект», и вам не понадобятся инструкции ввода/принятия для синхронизации доступа к нему. Эти (aka Rendezvous), вероятно, лучше всего зарезервированы для сообщений, переданных от одной задачи к другой. Если ваши петли не взаимодействуют так, вы можете использовать более легкие задания веса без рандеву. –