Page 106 - 6571
P. 106

<await (arrive[left] == 1);>
                            arrive[left] = 0;
                            < await (arrive[right] == 1);>
                            arrive[right] = 0;

                            arrive[I] = 1;
                            < await (continue[I] == 1);>
                            continue[I] = 0;
                            continue[left] = 1;
                            continue[right] = 1;
                        кореневий вузол R:
                            <await (arrive[left] == 1);>
                            arrive[left] = 0;
                            < await (arrive[right] == 1);>
                            arrive[right] = 0;
                            continue[left] = 1;
                            continue[right] = 1;

                        Об’єднуюче дерево можна зробити ще ефективнішим, якщо
                  кореневий  вузол  буде  відправляти  єдине  повідомлення,  яке

                  дозволяє  продовжувати  роботу  всім  іншим  вузлам.  Наприклад,
                  вузли  можуть  очікувати,  поки  кореневий  вузол  не  встановить
                  прапорець  continue.  Скидати  прапорець  continue  можна

                  двома  способами.  Перший  спосіб  полягає  у  застосуванні
                  подвійної  буферизації,  тобто  у  використанні  двох  прапорців
                  продовження і перемикання між ними. Другий спосіб полягає у

                  змінюванні  змісту  прапорця  продовження,  тобто  на  парних
                  циклах необхідно очікувати, коли його значення стане рівним 1, а
                  на непарних – 0.


                        Запитання для самоперевірки

                        1. Назвіть  основну  властивість  більшості  паралельних  ітера-
                  ційних алгоритмів?

                        2. У  чому  полягає  неефективність  використання  оператора
                  co?
                        3. Яким чином працює механізм бар’єрної синхронізації?

                        4. Який найпростіший спосіб реалізації бар’єрної синхроніза-
                  ції?
                        5. У чому полягає недолік використання спільних лічильників

                  під час реалізації бар’єрної синхронізації?
                        6. Яким чином відбувається синхронізація на основі прапор-
                  ців?

                                                             105
   101   102   103   104   105   106   107   108   109   110   111