Стили и методы программирования


Виды параллелизма - часть 2


Таким образом, возникает
-параллелизм, когда для успешного завершения параллельного блока достаточно, чтобы к успеху пришел один из запущенных процессов.

Рассмотрим теперь, каковы же общие условия применимости

-параллелизма. Частный пример про льва показывает, что в принципе можно было бы представить "процедуру" поиска беглеца в виде следующего условного предложения:

if Лев в квартале1

Искать в квартале 1, Лев в квартале2
Искать в квартале 2, Лев в квартале3
Искать в квартале 3, Лев в квартале4
Искать в квартале 4 fi

Но беда в том, что для выяснения истинности охраны нужно выполнить охраняемую команду, т.е. найти льва. Таким образом, данный условный оператор может служить лишь призраком.

Далее, имеется еще одно неявное условие, которое иллюстрируется вторым эпиграфом. Если исполнение охраняемой команды с неподходящей охраной может навредить (ресурсы-то оно займет, вред - это нечто более существенное, наподобие лечения согласно неверному диагнозу), то мы скорее всего будем вынуждены производить вскрытие программы после внезапной и мучительной ее кончины.

Таким образом,

-параллелизм является подпоркой для эффективной реализации призрачного условного оператора, удовлетворяющего двум требованиям:

  1. проверить охрану ничуть не проще, чем выполнить соответствующую охраняемую команду;
  2. выполнение команды из неверной альтернативы ничем, кроме растраты ресурсов, повредить не может.

Тогда можно запустить различные варианты параллельно на разных процессорах и посмотреть, какой первый придет к удаче.

В качестве примера задачи, естественно допускающей >

-параллелизм и не являющейся задачей поиска, можно рассмотреть часто возникающую в дифференциальных играх (в частности, в игре "перехватчик и носитель") ситуацию, когда имеется точка выбора. После данной точки предлагается несколько несовместимых способов, а чтобы определить, какая из стратегий приведет к поимке цели, нужно просчитать поведение системы при рассматриваемой стратегии до конца. Тогда, если впереди точка выбора и нужно заранее принять решение, целесообразно запустить сразу несколько процессов моделирования.




Начало  Назад  Вперед